我有一个在 Windows 服务器上托管的 React Web 应用程序。
在 IIS
中,我创建了 URL Rewrite
规则。当我从我们的网络中查看网站时,重写规则起作用并且它从 HTTP 重定向到 HTTPS。
但是,由于端口 80 在公共(public)端关闭,因此当我尝试以 HTTP 方式查看网站时,它永远不会重定向,只会超时。我假设这是因为它从未真正访问过该页面,因为端口已关闭,因此重定向永远不会启动。
有没有办法在该端口关闭的情况下仍然让网站重定向到 HTTPS?
这是我的 web.config
文件的样子:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<httpRedirect enabled="false" destination="https://mywebsitehere.com" />
<rewrite>
<rules>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://mywebsitehere.com/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
最佳答案
答案是否定的,为了让任何形式的 HTTP 重定向在服务器内工作,服务器必须能够在端口 80 上获取传入的连接 HTTP 请求,然后它会发送一个 3xx 响应告诉浏览器使用不同的 URL 再试一次,该 URL 将是 HTTPS URL。如果HTTP请求在服务器拿到之前就关闭了,自然就什么也做不了了。
关于redirect - 如果端口 80 关闭,我可以从 HTTP 重定向到 HTTPS 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65097121/