2015-12-24 3 views
0

Я пытаюсь изменить тело запроса запроса, чтобы показать инструмент исследования в документах Google. Я могу вызвать каждый запрос, который соответствует, и вытащить тело запроса form_data, но я не вижу никакого способа изменить тело запроса и передать его. Все, что мне нужно сделать, это изменить docs-show_reference на false.Modify Request Body

Блокировка запроса не работает, поскольку страница затем инициирует запрос еще раз, что приводит к циклу. Кажется, я не могу правильно изменить заголовки запросов, чтобы заблокировать запрос, поскольку единственное, что нужно изменить, находится в теле запроса form_data. Также не представляется возможным возвратить модифицированный объект запроса через chrome.webRequest

Расширение также блокирует все адреса не-документов (которые также работают).

Вот код, который я использую (который инициирует цикл переадресации). Все разрешения и конфиг в manifest.json также работают правильно.

chrome.webRequest.onBeforeRequest.addListener(
    function(info) { 
     var request = info.requestBody; 
     if (info.url.indexOf(chrome.runtime.id) > -1) { 
      console.log("popup: %s",info.url); 
      return; 
     } 
     if (info.url.indexOf("docs.google.com") > -1){ 
      if (request && request.formData && request.formData.preferences && request.formData.preferences[0] == '{"docs-show_reference":true}') { 

      return {cancel:true}; 
      } else { 
      return {cancel:false}; 
      } 
     } 
     if (info.url.indexOf('gstatic') > -1) { 
      return {cancel:false}; 
     } 

     console.log("blocked: %s",info.url); 
     return {redirectUrl:chrome.extension.getURL("blocked.png")}; 
    }, 
    // filters 
    { 
    urls: [ 
     "<all_urls>" 
    ] 
    }, 
    // extraInfoSpec 
    ["blocking", "requestBody"] 
); 

ответ

1

Согласно Issue 91191, мы не можем изменить данные формы в расширении хром в настоящее время.