今天在公司碰到一個這樣的問題:大致問題是這樣的,我把新生成的國外cdn路徑放到頁面上來用來查看,發現會出現如下類似的錯誤信息
Refused to load the script xxxxxx because it violates the following Content Security Policy directive:"script-src 'self' xxxxxxxxxxxxx"
原圖已經沒了,我在阮一峰的博客上把這張圖貼上來,這個問題主要是由於瀏覽器為了防止跨域腳本攻擊,而推出"網頁安全政策"(Content Security Policy,縮寫 CSP),
而我的nginx服務器開啟了CSP,所以在對另一個域名下的資源就不能啟動js腳本。
CSP的含義如下:
#激活內容安全策略Content Security Policy (CSP) ,大部分瀏覽器支持
# 告訴瀏覽器只能從本域名和你顯式指定的網址下載腳本。
接着就是修改nginx配置,了解以下概念,我找到原先unsafe-inline 指向的cdn域名,利用通配符*使得該所有二級域名都符合unsafe-inline
最后訪問成功!
總結:首先你已經把資源文件放入到服務器上,配置好了nginx,能正常運行,這時你想對瀏覽器做一個限制,想弄的安全一點,不想讓外人對你的網站注入病毒腳本,所以你在nginx配置上添加 add_header Content-Security-Policy ,把你需要訪問的url寫進去 ,這樣就 算完成CSP了。