chrome.webRequest not working?

后端 未结 4 1042
滥情空心
滥情空心 2020-12-24 07:31

I\'m trying to implement the chrome.webRequest API in my extension but for some reason it\'s just not working no matter what I do. Can someone post an example of usage? or c

4条回答
  •  不思量自难忘°
    2020-12-24 08:02

    I just fixed this in my extension here: https://github.com/devinrhode2/tweet-bar What I needed to do was use chrome.webRequest.onBeforeSendHeaders.addListener, but that also meant adding in the webRequest, webRequestBlocking permissions.. would be better to use declarativeWebRequest, but this project isn't that important to me.

    Key things:

    • manifest.json "background": { "persistent": true,
    • "permissions": [ "webRequest", "webRequestBlocking",

    When you make these changes in the manifest.json, you should actually consider re-installing the extension just to make sure the change is being picked up.

    This is my filter code. Yours should not be identical. See the docs here https://developer.chrome.com/extensions/webRequest

    chrome.webRequest.onBeforeSendHeaders.addListener((req) => {
      console.log('onBeforeSendHeaders');
      req.requestHeaders.forEach(function(header, index){
        console.log(header.name+':', header.value);
        if (headers[header.name.toLowerCase()]) {
          console.log('set header:'+header.name, 'to:'+headers[header.name.toLowerCase()]);
          req.requestHeaders[index].value = headers[header.name.toLowerCase()]
        }
      })
      return {requestHeaders: req.requestHeaders};
    },{
      urls: ['https://twitter.com/i/tweet/create'],
      types: ["xmlhttprequest"]
    },[
      'blocking',
      'requestHeaders'
    ]);
    

    I also added these headers to my xhr request, which doesn't hurt, makes you appear more similar to the normal site:

      //add headers:
      var headers = {
        'content-type': 'application/x-www-form-urlencoded',
        accept: 'application/json, text/javascript, */*; q=0.01',
        origin: 'https://twitter.com',
        referer: 'https://twitter.com/',
        'x-requested-with': 'XMLHttpRequest'
      };
      console.log('change')
      Object.keys(headers).forEach((header) => {
        postXhr.setRequestHeader(header, headers[header]);
      })
    

提交回复
热议问题