单页应用(SPA)中内容安全策略(CSP)的配置及适用服务咨询
针对你的SPA场景的CSP头配置说明
需要发送CSP头的服务
- 仅返回HTML页面的服务/端点:也就是承载SPA主界面和登录界面的后端服务(比如返回
index.html的核心服务)。因为CSP是浏览器加载HTML页面时生效的安全策略,只有HTML文档需要携带这个头,用来约束页面内的资源加载、脚本执行等行为。 - 以下服务/端点无需发送CSP头:
- 静态资源端点:
/assets/ourConfig.js、/assets/scripts/ourScript.js这类返回JS、CSS等静态资源的接口,它们的加载规则已经由页面的CSP策略定义,自身不需要带CSP头。 - OpenID配置端点:
/.well-known/openid-configuration返回的是JSON格式的配置数据,不是HTML,无需配置CSP头。 - 所有API服务:包括那些返回
OkResult()的PUT接口,只要是返回JSON、XML等纯数据的API,都不需要设置CSP头。
- 静态资源端点:
发送CSP头的时机
当用户请求SPA的主界面或登录界面的HTML文档时,后端在响应中携带CSP头即可。后续页面发起的静态资源请求、API调用,都会自动遵循该HTML页面带来的CSP策略,不需要每个请求重复发送。
是否所有API服务都需要配置?
不需要。CSP是针对浏览器端页面的安全控制机制,仅对HTML页面的上下文生效,和后端纯数据接口的返回无关。只有返回HTML的服务才需要配置CSP头,所有API服务都不需要设置。
内容的提问来源于stack exchange,提问作者Roman Matkovskyi
相关产品推荐
相关产品推荐

