?
Ce document utilise Manuel du site Web PHP chinois Libérer
激活CSP (Content Security Policy,上下文安全策略) 支持。
這是開發(fā)像Google Chrome Extensions等東西時所必須的。
CSP禁止應用使用 eval
或 Function(string)
生成的函數(shù) (以及其它東西)。讓 Angular兼容CSP我們只要做兩件不同的事:
Function
構(gòu)造來生成優(yōu)化的值獲取(value getters)AngularJS 使用 Function(string)
生成函數(shù)來優(yōu)化速度。使用 ngCsp
指令會引起Angular使用CSP兼容模式。 當AngularJS處于這個模式時,計算所有表達式的速度會比非CSP模式慢30%,但是不會發(fā)生安全違規(guī)行為。
CSP禁止JavaScript內(nèi)聯(lián)樣式表規(guī)則。在非CSP模式,Angular自動包含一些CSS規(guī)則(例如ngCloak)。為了使這些指令能在CSP模式下工作,請手工包含angular-csp.css
。
Angular嘗試自動檢測CSP是否激活來自動打開CSP安全模式。這個自動檢測會引發(fā)一個CSP錯誤并輸出到控制臺:
Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
script in the following Content Security Policy directive: "default-src 'self'". Note that
'script-src' was not explicitly set, so 'default-src' is used as a fallback.
這個錯誤是無害的,但很討厭。為了防止錯誤顯示,放置ngCsp
指令到應用的根元素上,或放在angular.js
腳本標簽中,不管哪種方式,必須是在html文檔中最先出現(xiàn)。
注意:這個指令只會在ng-csp
和 data-ng-csp
屬性表單中生效。
<html>
...
</html>
這個例子演示如何放置 ngCsp
指令到 html
標簽上。
<!doctype html>
<html ng-app ng-csp>
...
...
</html>