我負責使用Angular 12.0.5構建應用程式。我們的開發指南規定我們不允許使用
inline javascript,我們必須使用Content Security Policy防止inline javascript. 因此我將它添加到我的 Index.html 中:
<meta http-equiv="Content-Security-Policy" content="default-src 'self';style-src 'unsafe-inline' 'self';script-src 'self';">
只要我使用以npm start.
但是,當我使用該網站構建該網站ng build并將其部署到生產性 Web 服務器時,我在開發人員控制臺中看到此錯誤,并且我的應用程式停止作業:
拒絕執行行內事件處理程式,因為它違反了以下內容安全策略指令:“script-src 'self' ...
當我洗掉 CSP 時,此錯誤消失。
知道如何在不洗掉 CSP 的情況下完成這項作業嗎?
uj5u.com熱心網友回復:
在構建 Web 應用程式時,Angular 捆綁并最小化了 JavaScript,它引入了行內 JavaScript 以節省空間。
幸運的是,可以angular.json在"projects"//"architect"中配置 Web 應用程式的構建方式"configurations"。production您可以通過將-configuration 更改為以下內容來避免行內 JavaScript :
"production": {
"buildOptimizer": true,
"optimization": false,
"vendorChunk": true,
"extractLicenses": true,
"sourceMap": true,
"namedChunks": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
事實上,"optimization": false關閉了行內 Javascript 的生成。
閱讀本文以了解有關 Angular 如何進行捆綁的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/463984.html
標籤:javascript 有角度的 安全 内容安全策略
