我正在制作一個chrome擴展,其中有一個iframe。當擴展請求服務器以獲得該頁面時,它回傳一個錯誤 拒絕在框架中顯示 'https://subdomain.example.com/' ,因為它將 'X-Frame-Options' 設定為 'deny'。盡管我在我的.htaccess檔案中把x-frame-options設定為deny,并在我的后端專案的具體方法中添加了header('x-frame-options: GOFORIT'),它又回傳一個錯誤Refused to display 'https://subdomain.example.com/' in a frame because it set multiple 'X-Frame-Options' headers with conflicting values ('GOFORIT, DENY') 。回落到'deny'。我在manifest.json檔案中的webRequest和webRequestBlocking中添加了permissions。運氣不好,它回傳了'webRequestBlocking'要求清單版本為2或更低和未檢查的運行時間.lastError。你沒有權限使用阻塞式webRequest監聽器。請確保在您的清單中宣告webRequestBlocking權限。 所以我從權限中洗掉了webRequestBlocking,并添加了declarativeNetRequest,因為它是v3版的。然后我添加了
chrome.webRequest.onHeadersReceived.addListener(
function(info) {
var headers = info.responseHeaders;
for (var i=headers.length-1; i>=0; --i) {
var header = headers[i].name.toLowerCase() 。
if (header == 'x-frame-options' || header == 'frame-options') {
headers.splice(i, 1); // Remove header
}
}
return {responseHeaders: headers};
}, {
urls: [
'*://*/*', // Pattern to match all http(s) pages。
// '*://*.example.org/*', // Pattern to match one http(s) site.
],
types: ['sub_frame']
}, [
'blocking',
'responseHeaders',
//Modern Chrome需要'extraHeaders'來查看和改變這個頭,。
//所以下面的代碼只在現代瀏覽器中評估為'extraHeaders'。
chrome.webRequest.OnHeadersReceivedOptions.EXTRA_HEADERS。
].filter(Boolean)
);
到我的script.js,它回傳Uncaught TypeError: 不能讀取未定義的屬性(讀取'onHeadersReceived')
我應該怎么做才能只允許擴展向服務器請求呢?
uj5u.com熱心網友回復:
正如錯誤資訊所說,一個解決方案是使用"manifest_version"。2和"webRequestBlocking"在"permissions"中。
另一個解決方案是declarativeNetRequest,這是一個新的API,具有完全不同的語法所以你必須完全重寫你的代碼,這里有一個例子。鏈接.
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311291.html
標籤:
上一篇:關于JavaScript。我可以在腳本標簽中包含的js文本加載后、執行前修改其內容嗎?
下一篇:用perl單行代碼過濾檔案串列
