2016-09-22 90 views
0

我試圖從特定網站中刪除CSP標頭。從chromeApp的webview中刪除CSP標頭

問題是我不能得到webview的第一個請求。

(webRequest API)僅在webview開始載入後纔可用,而且我無法獲得第一個請求。

及以下劑量的代碼,因爲它開始聽晚

不行**的奇怪的是,它的工作原理,如果web視圖的devtools是開放: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元素上看到請求屬性。 – lazyboy