如果端口 80 关闭,我可以从 HTTP 重定向到 HTTPS 吗?

Can I Redirect to HTTPS from HTTP if port 80 is closed

我在 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请求在服务器拿到之前就关闭了,自然就什么也做不了了。