Integrity-Policy-Report-Only header
Tiêu đề phản hồi HTTP Integrity-Policy-Report-Only cho phép quản trị viên trang web báo cáo về các tài nguyên mà user agent tải sẽ vi phạm các đảm bảo Subresource Integrity nếu chính sách toàn vẹn được thực thi (sử dụng tiêu đề Integrity-Policy).
Các vi phạm của chính sách có thể được báo cáo bằng Reporting API.
Báo cáo có thể được quan sát trong trang mà chính sách đang được thực thi, bằng ReportingObserver, và được gửi đến các endpoint của máy chủ được định nghĩa trong tiêu đề phản hồi HTTP Reporting-Endpoints và được chọn bằng trường endpoints.
Để biết thêm thông tin xem IntegrityViolationReport.
Tiêu đề cho phép nhà phát triển kiểm tra các chính sách toàn vẹn và sửa các vấn đề nội dung trước khi cuối cùng triển khai tiêu đề Integrity-Policy để thực thi chính sách.
| Loại tiêu đề | Response header |
|---|
Cú pháp
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Các giá trị tiêu đề được xác định là từ điển structured field với các khóa sau:
blocked-destinations-
Danh sách các request destination phải bao gồm metadata toàn vẹn hợp lệ. Các giá trị được phép là:
sourcesOptional-
Danh sách các nguồn toàn vẹn phải bao gồm metadata toàn vẹn. Các giá trị được phép là:
inline-
Nguồn metadata toàn vẹn là nội tuyến với nội dung, chẳng hạn như thuộc tính integrity. Đây là mặc định.
Vì đây là giá trị mặc định và duy nhất, bỏ qua
sourcestương đương với chỉ địnhsources=(inline).
endpointsOptional-
Danh sách các tên endpoint báo cáo chỉ ra nơi báo cáo sẽ được gửi. Các endpoint báo cáo phải được xác định trong tiêu đề
Reporting-Endpoints.
Ví dụ
>Báo cáo khi script thiếu metadata toàn vẹn
Ví dụ này hiển thị tài liệu báo cáo đến một endpoint máy chủ khi bất kỳ <script> nào (hoặc HTMLScriptElement) không chỉ định thuộc tính integrity, hoặc khi tài nguyên script được yêu cầu ở chế độ no-cors.
Lưu ý rằng integrity-endpoint được sử dụng trong Integrity-Policy-Report-Only được định nghĩa trong tiêu đề Reporting-Endpoints.
Reporting-Endpoints: integrity-endpoint=https://example.com/integrity, backup-integrity-endpoint=https://report-provider.example/integrity
Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint, backup-integrity-endpoint)
Payload báo cáo có thể trông như thế này.
Lưu ý rằng thuộc tính body.reportOnly là true, vì báo cáo này được kích hoạt bởi vi phạm Integrity-Policy-Report-Only.
{
"age": "176279",
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": "true"
},
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
Thông số kỹ thuật
| Specification |
|---|
| Subresource Integrity> # integrity-policy-section> |