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à trang web hoặc các ứng dụng khác tiện ích. Các tiện ích thường 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 được tải trên trang web, nhưng mọi thành phần có trong gói của một tiện ích đều có thể truy cập được trên web.

Theo mặc định, không thể truy cập vào tài nguyên nào trên web, vì điều này cho phép trang web độc hại tạo vân tay số tiện ích mà người dùng đã cài đặt hoặc khai thá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 có thể truy cập vào tài nguyên của tiện ích đó.

Khai báo tệp kê khai

Dùng thuộc tính tệp kê khai web_accessible_resources để khai báo những tài nguyên sẽ được 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 các quy tắc về quyền truy cập vào tài nguyên. Từng đối tượng liệt kê một số tài nguyên tiện ích và phải cung cấp giá trị cho ít nhất một trong các matches hoặc Khoá extension_ids để cho biết những nguồn gốc có thể truy cập vào những 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ị (*) cho các kết quả khớp với ký tự đại diện. Ví dụ: "/images/*" hiển thị mọi thứ trong thư mục images/ của tiện ích theo cách đệ 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 khớp để chỉ định trang web nào có thể truy cập vào nhóm tài nguyên này. Chỉ nguồn gốc mới được dùng để khớp với URL. Các nguồn gốc bao gồm cả việc so khớp với miền con. Google Chrome đưa ra "Mẫu so khớp không hợp lệ" lỗi nếu mẫu có đường dẫn không phải là "/*".
"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ột mối liên kết hiển thị các tài nguyên được chỉ định với những 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.

Các tài nguyên có sẵn trong một trang web bằng URL chrome-extension://[PACKAGE ID]/[PATH] có thể được tạo bằng runtime.getURL() . Tài nguyên được phân phát với tiêu đề CORS thích hợp để chúng luôn có sẵn đang sử 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 đó trong danh sách là có thể truy cập trên web. Lưu ý các trường hợp góc sau:

  • Khi một tiện ích sử dụng API webRequest để chuyển hướng công khai yêu cầu tài nguyên này đến một tài nguyên không truy cập được trên web, thì yêu cầu đó cũng bị chặn.
  • Các lệnh chuyển hướng từ các tài nguyên công khai sẽ bị chặn ngay cả khi tài nguyên không truy cập được trên web được sở hữu bằng lệnh chuyển hướng tiện ích.
  • Bạn sẽ không thể điều hướng ở chế độ ẩn danh trừ phi bạn đặt giá trị của trường "incognito" 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.