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 頭以強制執行策略之前修復任何內容問題。
語法
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
頭值被定義為具有以下鍵的結構化欄位字典
blocked-destinations-
必須包含有效完整性元資料的 請求目的地 列表。允許的值是
sources可選-
必須包含完整性元資料的完整性源列表。允許的值是
inline-
完整性元資料來源是內容中內聯的,例如 integrity 屬性。這是預設值。
由於這是預設值和唯一值,因此省略
sources等同於指定sources=(inline)。
endpoints可選-
報告將傳送到的 報告端點名稱 列表。報告端點必須在
Reporting-Endpoints頭中定義。
示例
當指令碼缺少完整性元資料時報告
此示例顯示了一個文件,當任何 <script>(或 HTMLScriptElement)未指定 integrity 屬性,或者當指令碼資源以 no-cors 模式請求時,它會生成報告。
請注意,Integrity-Policy-Report-Only 中使用的 integrity-endpoint 是在 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)
報告負載 可能如下所示。
{
"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 |
瀏覽器相容性
載入中…