Integrity-Policy-Report-Only header

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

HTTP Integrity-Policy-Report-Only 響應頭允許網站管理員報告使用者代理載入的資源,如果強制執行完整性策略(使用 Integrity-Policy 頭),這些資源將違反 子資源完整性 保證。

報告可能針對指定 請求目的地 中缺少完整性元資料或以 no-cors 模式發出的請求生成。為了將報告發送到報告端點,Integrity-Policy-Report-Only 頭必須指定一個有效的報告端點名稱,該名稱與使用 Reporting-Endpoints 頭宣告的端點匹配。報告使用 Reporting API 生成,也可以在報告完整性策略的頁面中透過 ReportingObserver 觀察。報告主體的格式由 IntegrityViolationReportBody 字典給出(此主體的 JSON 序列化形式透過 POST 請求傳送到報告伺服器端點)。

該頭允許開發人員測試 完整性策略 並在最終部署 Integrity-Policy 頭以強制執行策略之前修復任何內容問題。

頭型別 響應頭
禁止請求頭

語法

http
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)

頭值被定義為具有以下鍵的結構化欄位字典

blocked-destinations

必須包含有效完整性元資料的 請求目的地 列表。允許的值是

script

指令碼資源。

style

樣式表資源。

sources 可選

必須包含完整性元資料的完整性源列表。允許的值是

inline

完整性元資料來源是內容中內聯的,例如 integrity 屬性。這是預設值。

由於這是預設值和唯一值,因此省略 sources 等同於指定 sources=(inline)

endpoints 可選

報告將傳送到的 報告端點名稱 列表。報告端點必須在 Reporting-Endpoints 頭中定義。

示例

當指令碼缺少完整性元資料時報告

此示例顯示了一個文件,當任何 <script>(或 HTMLScriptElement)未指定 integrity 屬性,或者當指令碼資源以 no-cors 模式請求時,它會生成報告。

請注意,Integrity-Policy-Report-Only 中使用的 integrity-endpoint 是在 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)

報告負載 可能如下所示。

json
{
  "type": "integrity-violation",
  "url": "https://example.com",
  "body": {
    "documentURL": "https://example.com",
    "blockedURL": "https://example.com/main.js",
    "destination": "script",
    "reportOnly": false
  }
}

規範

規範
子資源完整性
# integrity-policy-section

瀏覽器相容性

另見