添加内容安全策略正在阻止';本地';为多个站点托管JavaScript和其他站点资源

添加内容安全策略正在阻止';本地';为多个站点托管JavaScript和其他站点资源,javascript,resources,local,content-security-policy,multiple-sites,Javascript,Resources,Local,Content Security Policy,Multiple Sites,在将内容安全策略(CSP)添加到使用各种JavaScript和其他本地资源(如jQuery、字体等)的现有站点的过程中 CSP甚至似乎正在阻止和扫描这些资源,破坏正常的功能和网站的显示方式 这些不同的资源是站点的同一站点项目解决方案的一部分 从CSP开始,如下所示: “默认src https;脚本src'self';连接src'self';img src'self';样式src'self';基uri'self';表单操作'self'” 阻止jQuery、页面功能、导致布局问题等 然后去了: “默

在将内容安全策略(CSP)添加到使用各种JavaScript和其他本地资源(如jQuery、字体等)的现有站点的过程中

CSP甚至似乎正在阻止和扫描这些资源,破坏正常的功能和网站的显示方式

这些不同的资源是站点的同一站点项目解决方案的一部分

从CSP开始,如下所示:

“默认src https;脚本src'self';连接src'self';img src'self';样式src'self';基uri'self';表单操作'self'”

阻止jQuery、页面功能、导致布局问题等 然后去了:

“默认src https;img src‘self’数据:;脚本src‘self’不安全评估‘不安全内联’;样式src‘self’不安全内联‘报告示例’;连接src‘self’;基uri‘self’;表单操作‘self’;”

在样式src和脚本src上允许“不安全的eval”和“不安全的内联”似乎至少允许jQuery和各种资源工作。虽然仍然不包括允许使用一些字体和图标资源,如下图所示

从浏览器的开发工具控制台中可以看出,对于托管在站点运行所在的同一本地主机上的各种字体等,指示“阻止加载资源”

到目前为止,我发现这些资料对于解决这一问题非常有用:

如何允许加载这些资源? 这似乎是“默认src https”部分,它阻止了它们的加载

如果添加了“localhost:50149”,它们似乎可以正常加载,但当本地ISS更改其端口或将同一代码部署到多个托管站点时,这就不起作用了

允许使用相同的设置部署开发站点和多个站点

有没有一种方法可以在不直接知道“主机”站点名称的情况下允许来自同一本地主机的资源

如何允许加载这些资源?这似乎是“默认src https”部分,它阻止了它们的加载

是的,您没有指定
font-src
指令,因此它会回退到
default-src
。默认src https指令会阻止在您的案例中加载字体,因为:

  • https
    a错误的方案源,正确的方案源是
    https:
    (带冒号)
  • 指定
    https:
    无法解决此问题,因为您通过
    http:
    (http://localhost:50149/Content/fonts/...)
您可以使用
默认src http:https:
。这是不安全的,因为允许任何主机源忽略回退指令。
您可以使用默认的src“self”。如果从
localhost:xyz
加载页面,则
'self'
将允许从
localhost:xyz
加载资源(相同的方案、主机名和端口号)。
另外,如果仅阻止字体,您可以将
字体src'self'
添加到CSP中,而不是使用
默认src

如果添加了“localhost:50149”,它们似乎可以正常加载,但当本地ISS更改其端口或将同一代码部署到多个托管站点时,这就不起作用了


可以指定
localhost:
。星号(*)表示任何端口号。或者使用上面提到的“self”。

谢谢您的帮助!