Tệp kê khai – Tài nguyên có thể truy cập trên web

Tài nguyên có thể truy cập trên web là các tệp bên trong một tiện ích mà các trang web hoặc tiện ích khác có thể truy cập vào. Các tiện ích thường sử dụng tính năng này để hiển thị hình ảnh hoặc các thành phần khác cần tải lên trang web. Tuy nhiên, mọi thành phần có trong gói tiện ích đều có thể được truy cập trên web.

Theo mặc định, không có tài nguyên nào có thể truy cập trên web vì điều này cho phép trang web độc hại vân tay số các tiện ích mà người dùng đã cài đặt hoặc khai thác các lỗ hổng bảo mật (ví dụ: lỗi XSS) trong các tiện ích đã cài đặt. Chỉ những trang hoặc tập lệnh được tải từ nguồn gốc của một tiện ích mới có thể truy cập vào tài nguyên của tiện ích đó.

Khai báo tệp kê khai

Sử dụng thuộc tính tệp kê khai web_accessible_resources để khai báo tài nguyên nào sẽ hiển thị và nguồn gốc nào. Thuộc tính này là một mảng các đối tượng khai báo quy tắc truy cập tài nguyên. Mỗi đối tượng liệt kê một số tài nguyên tiện ích và phải cung cấp một giá trị cho ít nhất một trong các khoá matches hoặc extension_ids để cho biết các nguồn gốc có thể truy cập vào các tài nguyên này.

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

Mỗi đối tượng trong mảng chứa các phần tử sau:

"resources"
Một mảng chuỗi, mỗi chuỗi chứa một đường dẫn tương đối đến một tài nguyên nhất định trong thư mục gốc của tiện ích. Tài nguyên có thể chứa dấu hoa thị (*) để khớp với ký tự đại diện. Ví dụ: "/images/*" hiển thị mọi nội dung trong thư mục images/ của tiện ích theo quy tắc đệ quy, trong khi "*.png" hiển thị mọi tệp PNG.
"matches"
Một mảng chuỗi, mỗi chuỗi chứa một mẫu phù hợp chỉ định những trang web có thể truy cập vào nhóm tài nguyên này. Chỉ nguồn gốc được dùng để khớp với URL. Nguồn gốc bao gồm dữ liệu so khớp miền con. Google Chrome sẽ phát hiện lỗi "Mẫu khớp không hợp lệ" nếu mẫu đó có đường dẫn khác "/*".
"extension_ids"
Một mảng chuỗi, mỗi chuỗi chứa mã nhận dạng của một tiện ích có thể truy cập vào các tài nguyên.

Mỗi phần tử phải bao gồm một phần tử "resources" và một phần tử "matches" hoặc "extension_ids". Thao tác này sẽ thiết lập mối liên kết hiển thị tài nguyên được chỉ định với các trang web khớp với mẫu hoặc với các tiện ích có mã nhận dạng trùng khớp.

Tài nguyên có sẵn trong một trang web bằng URL chrome-extension://[PACKAGE ID]/[PATH]. Bạn có thể tạo tài nguyên này bằng phương thức runtime.getURL(). Các tài nguyên này được phân phát với các tiêu đề CORS thích hợp nên bạn có thể dùng fetch().

Thao tác điều hướng từ một nguồn gốc web đến một tài nguyên tiện ích sẽ bị chặn, trừ phi tài nguyên đó được liệt kê là có thể truy cập trên web. Hãy lưu ý những trường hợp góc sau:

  • Khi một tiện ích sử dụng API webRequest để chuyển hướng yêu cầu tài nguyên công khai đến một tài nguyên không thể truy cập trên web, thì yêu cầu như vậy cũng sẽ bị chặn.
  • Lệnh chuyển hướng từ các tài nguyên công khai sẽ bị chặn ngay cả khi tiện ích chuyển hướng sở hữu tài nguyên không thể truy cập trên web.
  • Điều hướng bị chặn ở chế độ ẩn danh trừ khi giá trị của trường "incognito" được đặt thành "split".

Bản thân tập lệnh nội dung không cần được cho phép.

Ví dụ:

Ví dụ về Tài nguyên có thể truy cập trên web minh hoạ cách sử dụng phần tử này trong một tiện ích đang hoạt động.