Chrome 扩展开发-请问如何跨域XMLHttpRequest中修改Referer

比卡超
  • 329

RT,正常情况是无法修改,但是插件应该总行了吧?但是测试好像还是无法修改Referer。请问如何可以在插件中修改到XMLhttpRequest。注意噢,是在插件中

回复
阅读 12.6k
2 个回答

可能通过这种方式来添加或者更新 Referer

chrome.webRequest.onBeforeSendHeaders.addListener(
    function(details) {
        if (details.type === 'xmlhttprequest') {
            var exists = false;
            for (var i = 0; i < details.requestHeaders.length; ++i) {
                if (details.requestHeaders[i].name === 'Referer') {
                    exists = true;
                    details.requestHeaders[i].value = 'http://www.baidu.com';
                    break;
                }
            }

            if (!exists) {
             details.requestHeaders.push({ name: 'Referer', value: 'http://www.baidu.com'});
            }

            return { requestHeaders: details.requestHeaders };
        }
    },
    {urls: ['http://www.geekpark.net/ajax/*']},
    ["blocking", "requestHeaders"]
);

具体可以参考: https://developer.chrome.com/extensions/webRequest.html#event-onBeforeSendHeaders

我做了个 demo,你可以自己点击 background 页面的开发人员工具看看请求的 HEADERS https://gist.github.com/greatghoul/5420697

需要注意的是,要在 manifest.json 中加入相关的权限:

"permissions": [
    "webRequest", "webRequestBlocking", "http://www.geekpark.net/ajax/"
  ]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏