【发布时间】:2021-05-13 06:14:15
【问题描述】:
我在 IIS 8.5 中设置了两个站点,我将它们称为 test 1 (test1.mydomain.com) 和 test 2 (test2.mydomain.com)。 p>
测试 1 web.config 中有一个 URL 重写规则,它将 test1.mydomain.com/app/{route} 重写为 test2.mydomain.com/{route}。
<rule name="Test 2 rewrite" stopProcessing="false">
<match url="^app(\/.*)?$" />
<action type="Rewrite" url="https://test2.mydomain.com{R:1}" />
</rule>
这一切都按预期工作,但是我发现当应用此重写规则时,测试 1 web.config 中的自定义标头与测试 2 web.config 中的自定义标头一起包含。更具体地说,这意味着我在响应中有 两个 内容安全策略标头。
这会导致问题,因为测试 1 的策略比测试 2 更严格,因此在访问 test1.mydomain.com/app 时,脚本和样式无法加载。
我已经尝试用位置标签包装测试 1 的 system.web 和 system.webServer,看看我是否可以阻止它们被继承,但这没有效果:
<location path="." inheritInChildApplications="false">
<system.web>
...
</system.web>
<system.webServer>
...
</system.webServer>
</location>
当 url 被重写以指向测试 2 时,我只希望测试 2 web.config 应用于该请求。这甚至可能吗?如果不可能,是否只有扩展站点 1 的 CSP 以满足站点 2 的要求的解决方案?
谢谢。
【问题讨论】:
标签: web-config iis-8 content-security-policy url-rewrite-module