在将 Content-Security-Policy (CSP) 添加到使用各种 JavaScript 和其他本地资源(如 jQuery、字体等)的现有站点的过程中。
CSP 似乎甚至会阻止和扫描这些资源,从而破坏正常功能和网站的显示方式。
这些不同的资源是站点的同一站点项目解决方案的一部分。
从这样的 CSP 开始:
“default-src https;script-src ‘self’;connect-src ‘self’;img-src ‘self’;style-src ‘self’;base-uri ‘self’;form-action ‘self’”
哪个阻止了 jQuery,页面功能,导致布局问题等然后去了:
“default-src https ; img-src 'self' data:; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline' 'report-sample'; 连接-src ‘self’;base-uri ‘self’;form-action ‘self’;”
在 style-src 和 script-src 上允许 'unsafe-eval' 和 'unsafe-inline' 似乎至少允许 jQuery 和各种资源工作。虽然仍然不包括允许一些字体和图标资源,如下图所示。1
正如可以在浏览器的开发工具控制台中看到的那样,指示“阻止加载资源”对于托管在站点运行的同一本地主机上的各种字体等。1
这些是我迄今为止发现的有用的资源,可以用来解决这个问题:
- 内容安全策略 (CSP) 如何工作?
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
如何允许加载这些资源?这似乎是阻止它们加载的“default-src https”部分。
如果添加了“localhost:50149”,它们似乎可以正常加载,但是当本地 ISS 更改其端口或将相同的代码部署到多个托管站点时,这将不起作用。
允许使用相同的设置部署开发站点和多个站点。
有没有办法在不直接知道“主机”站点名称的情况下允许来自同一本地主机的资源?