通过Google Chrome扩展程序修改Referer请求标头

时间:2014-05-19 19:40:27

标签: javascript google-chrome-extension underscore.js

我有以下代码尝试确保在发出请求时设置了Referer标头:

chrome.webRequest.onBeforeSendHeaders.addListener(function (info) {
    var refererRequestHeader = _.find(info.requestHeaders, function (requestHeader) {
        return requestHeader.name === 'Referer';
    });

    var refererUrl = info.url.substring(0, info.url.indexOf('/embed/'));

    if (_.isUndefined(refererRequestHeader)) {
        info.requestHeaders.push({
            name: 'Referer',
            value: refererUrl
        });
    } else {
        refererRequestHeader.value = refererUrl;
    }   

    return { requestHeaders: info.requestHeaders };
}, {
    //  Match on my specific iframe or else else this logic can leak into outside webpages and corrupt other YouTube embeds.
    urls: ['*://*.youtube.com/embed/?enablejsapi=1&origin=chrome-extension:\\\\jbnkffmindojffecdhbbmekbmkkfpmjd']
},
    ['blocking', 'requestHeaders']
);

此代码在99%的时间内都很有效。但是,在某些PC上,它会失败。我试图调查为什么会发生这种情况,但我没有很多线索继续下去。

我的问题是:

  • 此代码是否适合其尝试实现的目标?我试图找到一个现有的Referer requestHeader。如果找到,我将标头的值设置为给定的URL。如果找不到标题,我会推它。
  • 我已经对通过chrome.webRequest.handlerBehaviorChanged公开的“handlerBehaviorChanged”方法做了一些阅读,但我仍然不确定这是否可以解决我的问题。我发现这篇帖子:How to clean chrome in-memory cache?暗示了chrome.webRequest的间歇性错误......但是,我没有看到任何结论性的。在设置我的监听器后调用handleBehaviorChanged是否明智?
  • 我可以使用哪些其他选项来调试此问题?有没有人在相关情况下经历过间歇性失败?

0 个答案:

没有答案