2016-09-22 1 views
0

特定のWebサイトからCSPヘッダーを削除しようとしています。chromeAppのwebviewからCSPヘッダーを削除します

問題は、webviewの最初のリクエストを取得できないということです。

(webRequest API)は、webviewの読み込みが開始された後にのみ利用でき、最初のリクエストは取得できません。

線量以下のコード、それは後半

を聞くことが開始されるために動作しない**奇妙な部分は、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

実行中のChromeのバージョンは何ですか? 53.0.2785.113では、webview要素を作成した直後(およびロードしていない)に、webview要素のrequestプロパティが表示されます。 – lazyboy

関連する問題