我正在尝试在我的网站(例如 www.example.com)上实现 HSTS,该网站最近已从 http 移至 https,并且位于默认端口。而且我有一个 WCF 服务运行在同一个域但不同的端口(例如 www.example.com:8000)。
我尝试做的是在 Web.config 文件中添加以下代码
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000"/>
</customHeaders>
</httpProtocol>
</system.webServer>
然后后来我从这里尝试了这段代码(因为上面的实现是不正确的)
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
<outboundRules>
<rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
我在 www.example.com 的网站运行良好。但是,一旦我访问 www.example.com,响应标头 Strict-Transport-Security 就会被缓存,然后尝试访问 WCF 服务页面重定向到 https 导致“SSL 错误”,因为该服务在 8000 端口上运行。
注意:清除缓存并访问相同的服务页面会显示该页面。
如何停止将端口 8000 上的调用重定向到 https?