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 trong trang web, nhưng mọi nội dung có trong gói của 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 đó.
Nội dung 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 được hiển thị và cho 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. Từng đối tượng
ánh xạ một mảng tài nguyên tiện ích với một mảng URL và/hoặc mã tiện ích có thể truy cập vào các tài nguyên đó.
{
...
"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/*" ],
"use_dynamic_url": true
}
],
...
}
Mỗi đối tượng trong mảng chứa các phần tử sau:
"resources"
- Một mảng các 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 từ thư mục gốc của tiện ích. Tài nguyên có thể chứa dấu hoa thị (
*
) để so khớp ký tự đại diện. Ví dụ:"/images/*"
hiển thị mọi thứ trong thư mụcimages/
của tiện ích theo cách đệ quy, trong khi"*.png"
hiển thị tất cả tệp PNG. "matches"
- Một mảng chuỗi, mỗi chuỗi chứa một mẫu khớp chỉ định những trang web có thể truy cập vào bộ 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 tài nguyên.
"use_dynamic_url"
- Nếu đúng, chỉ cho phép truy cập vào tài nguyên thông qua mã nhận dạng động. Hệ thống sẽ tạo một mã động cho mỗi phiên. Điều đó có nghĩa là tiện ích sẽ được tạo lại khi trình duyệt khởi động lại hoặc tải lại tiện ích.
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. Phần tử "use_dynamic_url"
là phần tử không bắt buộc.
Khả năng điều hướng của tài nguyên
Tài nguyên có sẵn trong một trang web thông qua URL
chrome-extension://[PACKAGE ID]/[PATH]
có thể được tạo bằng runtime.getURL()
. Các tài nguyên được phân phát bằng tiêu đề CORS thích hợp, vì vậy, các tài nguyên này có sẵn thông qua 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 đặc biệt 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 truy cập được trên web, thì yêu cầu đó cũng bị chặn.
- Điều trên vẫn đúng ngay cả khi tài nguyên không truy cập được trên web thuộc sở hữu của tiện ích chuyển hướng.
- Thao tác điều hướng bị chặn ở chế độ ẩn danh, trừ phi 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.