內容安全政策 (CSP) 會限制允許載入和執行的資源和指令碼,藉此保護您的網頁。您可以從網路伺服器的 HTTP 回應中設定 Content-Security-Policy
標頭,藉此啟用 CSP。
設定 CSP 有兩種標準方式:
Google 發布商廣告代碼 (GPT) 使用的網域會隨著時間改變,因此僅支援嚴格 CSP (選項 2)。這種做法可讓您省去維護可能過時與破壞網站之網域清單的持續性清單。
使用 GPT 設定 CSP
在您的網路伺服器上啟用 CSP。
按照採用嚴格的 CSP 一文中的步驟設定 CSP 標頭,並將 Nonce 套用至網頁上的每個指令碼標記,包括
gpt.js
。GPT 特別支援以下 CSP 指令:Content-Security-Policy: object-src 'none'; script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; base-uri 'none'; report-uri https://your-report-collector.example.com/
如果用途符合您的需求,您可以選擇更寬鬆的政策。限制較嚴格的政策可能會中斷,恕不另行通知。
啟用跨網域轉譯。
廣告 iframe 可載入 CSP 可能不允許的外部資源。由於同一個網域 iframe 會沿用頂層視窗的 CSP,而且 GPT 無法控制廣告素材的內容,因此同一網域的廣告素材通常無法搭配 CSP 標頭正常運作。
如要為所有廣告素材啟用跨網域顯示功能,請在載入任何廣告版位之前執行
googletag.pubads().setForceSafeFrame(true)
。<!doctype html> <html> <head> <meta charset="utf-8"> <title>Hello GPT</title> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1"></script> <script nonce="KC7tcz53FHqumKP1"> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { googletag.pubads().setForceSafeFrame(true); }); </script> </head>
測試
建議您先設定 Content-Security-Policy-Report-Only
標頭 (而非 Content-Security-Policy
) 來測試政策。標題會回報違規行為,但仍允許在網頁上