簡體   English   中英

從 Chrome 擴展發送 AJAX

[英]Sending AJAX from Chrome Extension

我想創建一個可以使用XMLHttpRequest發送 AJAX 調用的 Chrome 擴展程序。 我向它發送請求的網站不是我的。

當網站收到 AJAX 調用時,它會檢查請求的Referer標頭。 如果我從后台頁面(Chrome 擴展程序)發送 AJAX,則不會發送Referer標頭,並且請求被拒絕。

如何從后台頁面更改Referer標題?

您應該能夠使用webRequest API攔截您自己的請求並修改請求標頭。

具體來說,以阻塞方式偵聽chrome.webRequest.onBeforeSendHeaders ,編輯頭對象,並將其返回到覆蓋頭。

並非所有標題都可以通過這種方式修改,但Referer可以。

如Xan的回答所述,您需要使用webRequest API 既然我喜歡答案中的最小例子,這里有一個:

manifest.json權限需要包含:

"permissions": [
    "*://target.site/", 
    "webRequest",
    "webRequestBlocking"
]

用於修改包含任意引用的請求的js代碼:

callback = function(details) {
    details.requestHeaders.push({
        name: 'Referer',
        value: 'http://your.arbitrary.referer'
    });
    return {
        requestHeaders: details.requestHeaders
    };
};

filter = { urls: ["*://target.site/target.html"] };
opts = ['blocking', 'requestHeaders']
chrome.webRequest.onBeforeSendHeaders.addListener(callback, filter, opts);

每當瀏覽器立即向*://target.site/target.html發出請求時,referer將設置為http://your.arbitrary.referer 這對用戶完成的請求(通過單擊鏈接或在執行AJAX請求的站點上)以及您自己的擴展的AJAX請求生效。

W3規范明確禁止更改“Referer”標題。 當您嘗試手動設置Referer時,請求將被拒絕。

資料來源: http//www.w3.org/TR/XMLHttpRequest/#dom-xmlhttprequest-setrequestheader

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM