Quyền đối với ActiveTab

Quyền activeTab cấp cho một tiện ích quyền truy cập tạm thời vào thẻ đang hoạt động khi người dùng gọi tiện ích đó (ví dụ: bằng cách nhấp vào thao tác trên trình duyệt). Quyền truy cập vào thẻ sẽ tồn tại trong khi người dùng đang ở trang đó và bị thu hồi khi người dùng rời khỏi hoặc đóng thẻ.

Thuộc tính này đóng vai trò thay thế cho nhiều trường hợp sử dụng <all_urls>, nhưng hiển thị không có thông báo cảnh báo trong quá trình cài đặt:

Lưu ý: Từ M72 trở đi, quyền activeTab sẽ được cấp cho đến khi người dùng chuyển đến một nguồn gốc khác. Nghĩa là, nếu người dùng gọi tiện ích trên https://example.com rồi chuyển đến https://example.com/foo, thì tiện ích đó sẽ tiếp tục có quyền truy cập vào trang. Nếu người dùng chuyển đến https://chromium.org, thì quyền truy cập sẽ bị thu hồi.

Không có activeTab:

Không có ActiveTab

Với activeTab:

Với thẻ đang hoạt động

Ví dụ:

Xem tiện ích mẫu Page Redder:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

Động lực

Hãy xem xét một tiện ích cắt video có thao tác trên trình duyệtmục trong trình đơn theo bối cảnh. Tiện ích này có thể chỉ thực sự cần truy cập vào thẻ khi thao tác trên trình duyệt được nhấp hoặc khi mục trong trình đơn theo ngữ cảnh được thực thi.

Nếu không có activeTab, tiện ích này sẽ cần yêu cầu quyền truy cập đầy đủ và liên tục vào mọi trang web để có thể thực hiện công việc nếu người dùng gọi nó. Đây là một tiện ích đơn giản như vậy để có thể giao cho bạn rất nhiều năng lượng. Nếu tiện ích đã từng bị xâm phạm, kẻ tấn công sẽ có quyền truy cập vào mọi nội dung mà tiện ích có.

Ngược lại, tiện ích có quyền activeTab chỉ có quyền truy cập vào một thẻ để phản hồi một cử chỉ rõ ràng của người dùng. Nếu tiện ích bị xâm phạm, kẻ tấn công sẽ phải đợi người dùng gọi tiện ích trước khi có quyền truy cập. Và quyền truy cập đó chỉ tồn tại cho đến khi thẻ được điều hướng hoặc được đóng.

Những nội dung mà ActiveTab cho phép

Khi quyền activeTab được bật cho một thẻ, tiện ích có thể:

  • Gọi tabs.executeScript hoặc tabs.insertCSS trên thẻ đó.
  • Lấy URL, tiêu đề và biểu tượng trang web cho thẻ đó thông qua một API trả về đối tượng tabs.Tab (về cơ bản, activeTab cấp quyền tabs tạm thời).
  • Chặn các yêu cầu mạng trong thẻ đến nguồn gốc khung chính của thẻ bằng API webRequest. Tiện ích này tạm thời nhận được quyền từ máy chủ lưu trữ đối với nguồn gốc khung chính của thẻ.

Đang gọi thẻ đang hoạt động

Các cử chỉ người dùng sau đây bật activeTab: