외부 확장 스크립트 (Gmail 확장을위한 Chrome 확장 프로그램에서)가 XHR/AJAX 요청을 시도하면 실패합니다 . 이 때문에외부로드 스크립트 (Gmail, Chrome 39.x, 콘텐츠 보안 정책)에서 XHR 요청하기
Refused to load the script 'https://<domain-path>.js?' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://talkgadget.google.com/ https://www.googleapis.com/appsmarket/v2/installedApps/ https://www-gm-opensocial.googleusercontent.com/gadgets/js/ https://docs.google.com/static/doclist/client/js/ https://www.google.com/tools/feedback/ https://s.ytimg.com/yts/jsbin/ https://www.youtube.com/iframe_api https://ssl.google-analytics.com/ https://apis.google.com/_/scs/abc-static/ https://apis.google.com/js/ https://clients1.google.com/complete/ https://apis.google.com/_/scs/apps-static/_/js/ https://ssl.gstatic.com/inputtools/js/ https://ssl.gstatic.com/cloudsearch/static/o/js/ https://www.gstatic.com/feedback/js/ https://www.gstatic.com/common_sharing/static/client/js/ https://www.gstatic.com/og/_/js/".
: Gmail Content Security Policy on Chrome extensions
이 솔루션은 페이지에 외부에서로드 된 스크립트를 주입하기위한 작동합니다
그리고이 질문에서 http://googleonlinesecurity.blogspot.com/2014/12/reject-unexpected-content-security.html. 이 스크립트는 XHR 요청을 만드는 경우, 동일한 방법으로 차단 된 것 :
워크 플로는 다음과 같습니다
- 확장은 (preloader.js)
- 머리에 로컬 파일을 주입 gmail.com을 위해 출시 프리 로더는 태그를 삽입하여 외부 Javascript 파일 (actual-code.js)을로드합니다.
- 실제 확장 코드는 AJAX/XHR 요청을 시도하며 Gmail의 CSP에 의해 차단됩니다.
확장 프로그램에서 CSP를 업데이트하면 이러한 정책이 수동 스크립트가 아닌 콘텐츠 스크립트에 적용되므로 해결되지 않는 것 같습니다. 단점으로
가능한 해결 방법 : 은 -
다른 아이디어 (열심히 확장 버전에 묶여, 최신 상태로 유지하기 위해) 확장의 전체 코드를 포함?
나쁜 것도 아니고 그것에 대해서도 생각했지만 정규 AJAX 요청에 대해서는 상당한 양의 리팩토링이 필요했습니다. 확장 내에서 전체 코드를 내용 스크립트로 포장하는 데는 단점이 있지만 원본 삽입 스크립트에서는 수정하지 않아도됩니다. – sergiokas