2016-09-22 7 views
0

Я пытаюсь удалить заголовок CSP с определенного сайта.удалить заголовок CSP из webview в chromeApp

Проблема в том, что я не могу получить первый запрос веб-представления.

(API webRequest) доступен только после загрузки веб-представления, и я не могу получить первый запрос.

А код ниже дозы не работает, так как он начинает слушать до конца

** часть странно, что это работает, если DevTools по WebView открыт: 0

previewWebview.addEventListener('loadstart', function() { 
    var HEADERS_TO_STRIP_LOWERCASE = [ 
     'content-security-policy', 
     'content-security-policy-report-only' 
    ]; 
    previewWebview.request.onHeadersReceived.addListener(
     function (details) { 

      return { 
       responseHeaders: details.responseHeaders.filter(function (header) { 
        return HEADERS_TO_STRIP_LOWERCASE.indexOf(header.name.toLowerCase()) === -1; 
       }) 
      }; 
     }, { 
      urls: ["<all_urls>"] 
     }, ["blocking", "responseHeaders"]); 

}); 

ответ

1

Чтобы получить он работает с самого начала (т. е. с первой загрузки), вам понадобится webview declarative webRequest API.

var w1 = document.createElement('webview'); 
    var headerRemoveRule = { 
    conditions: [ 
     new chrome.webViewRequest.RequestMatcher() 
    ], 
    actions: [ 
     new chrome.webViewRequest.RemoveResponseHeader({ 
     name: 'x-robots-tag' 
     }) 
    ] 
    }; 

    // declarative WebRequest API, call before loading webview. 
    w1.request.onRequest.addRules([headerRemoveRule]); 
    w1.src = 'https://jsbin.com/piwakil'; 
    document.body.appendChild(w1); 
+0

Это ничего не меняет, свойство запроса еще не существует до первого запроса. –

+0

Также этот код не запускается. –

+0

Какую версию хром вы используете? На 53.0.2785.113 я определенно вижу свойство запроса в элементе webview сразу после его создания (и не загружая его). – lazyboy