Content Security Policy是一种防止恶意资源加载和请求的方式.它的实现和执行全部由浏览器完成,开发者只需提供配置。
在开发使用了CSP. 有一种方式是只需设置响应头,如下
response.addHeader("Content-Security-Policy","default-src 'self' 'unsafe-inline' 'unsafe-eval'");
在设置了该之后, 发现系统本来的Websocket功能失效了.请求直接被浏览器拦截了.后面才知道是CSP的原因,因为系统的Websocket使用的ws请求协议,而'self'值则表示只能加载相同源的内容
CSP是一种白名单制度.故我们需要在HTTP头标上ws请求协议. 如下
response.addHeader("Content-Security-Policy","default-src 'self' ws: 'unsafe-inline' 'unsafe-eval'");
==========时间分隔线:2019-08================
今天在系统中集成pageoffice功能时,在页面进行打开pageoffice窗口时,又出现了请求被CSP拦截的问题.如下
Refused to load the script 'http://127.0.0.1:57070/json.htm?callback=jQuery1910557214206