2016-09-22 4 views
0

특정 웹 사이트에서 CSP 헤더를 제거하려고합니다.chromeApp의 webview에서 CSP 헤더를 제거합니다.

문제는 내가 webview의 첫 번째 요청을 얻을 수 없다는 것입니다.

(webRequest API)는 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

얻을하려면 :

그리고 늦은

을 듣고 시작부터 투여 아래의 코드가 작동하지 않음 ** 이상한 부분은 웹보기의 DevTools로가 열려있는 경우 작동한다는 것입니다 처음부터 바로 작동합니다 (예 : 첫 번째로드). 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 요소를 생성 한 직후에 (그리고로드하지 않고) request 속성을 확실히 볼 수 있습니다. – lazyboy

관련 문제