chrome 不允许修改 XMLHttprequest 的 User-Agent?

console 里报错 Refused to set unsafe header "User-Agent"

chrome 插件内代码如下:

var req = new XMLHttpRequest();
req.open('GET', _URL_, false);
req.setRequestHeader("User-Agent","UA_test_string");
req.send();
console.log(req.responseText);
阅读 23.1k
3 个回答

事实上你可以使用 webRequest 来实现修改 User Agent 这个需要的权限比较高,而且似乎上传到商店要审核的。

参考: https://github.com/greatghoul/mobivie...

var MOBIVIEW_URL = chrome.extension.getURL('mobiview.html');
var IPHONE4 = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5';
chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.windows.create({ url: MOBIVIEW_URL, width: 320, height: 480, type: 'panel' },
        function(win) {
            var tabId = win.tabs[0].id;
            chrome.webRequest.onBeforeSendHeaders.addListener(
                function(details) {
                    for (var i = 0; i < details.requestHeaders.length; ++i) {
                        if (details.requestHeaders[i].name === 'User-Agent') {
                            details.requestHeaders[i].value = IPHONE4;
                        }
                        if (details.requestHeaders[i].name === 'X-Frame-Options') {
                            details.requestHeaders[i].value = "GOFORIT";
                        }
                    }
                    return { requestHeaders: details.requestHeaders };
                },
                {urls: ["<all_urls>"], tabId: tabId },
                ["blocking", "requestHeaders"]
            );
        }
    );
});

是的,这在chrome里是不允许的,貌似现在除了IE,其它浏览器都不允许修改这个了,新版的Firefox里好像也不允许。

如果你是做测试用, 可以用
Chrome UA Spoofer 插件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题