我在从 HTTP 重定向 HTTPS Web 服务时遇到问题。
我已将 CA SSL 证书应用于我的 Web 服务,并使用 URL 重写在 IIS 7.5 中完成了重定向的更改。
以下是我的配置web.config
:
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
但是,如果不取消选中我的 Web 服务需要 SSL,我就无法从 HTTP 重定向到 HTTPS,从而出现 403.4 错误。
当我尝试添加带有 403.4 代码的错误页面时,它不接受它并说我们无法添加 403.3 代码。它只接受 403、404 等。
答案1
“需要 SSL”复选框正是导致所有常规 HTTP 请求返回 HTTP 403 的原因。取消选中它不会“破坏 SSL”或类似情况,它只是允许 IIS 为 HTTP 请求提供响应
有两种方法可以解决此问题:
- 取消选中网站上的“需要 SSL”复选框,并使用 URL 重写重写所有 HTTP 请求
- 保持“需要 SSL”设置
- 从网站中删除所有非 HTTPS 绑定
- 使用从真实网站中删除的 HTTP 绑定创建一个新的虚拟网站
- 使用 URL 重写将所有请求从虚拟网站通过 https 重定向到真实网站
第一种方法是最容易实现和维护的,但第二种方法提供了额外的保障,即如果 URL 重写模块因任何原因失败,IIS 将抛出错误(而不是提供非 http 内容)