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

http
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à:

script

Tài nguyên script.

style

Tài nguyên stylesheet.

sources Optional

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 sources tương đương với chỉ định sources=(inline).

endpoints Optional

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.

http
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.reportOnlytrue, vì báo cáo này được kích hoạt bởi vi phạm Integrity-Policy-Report-Only.

json
{
  "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

Khả năng tương thích trình duyệt

Xem thêm