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

标签 redirect iis https url-rewriting web-config

我有一个在 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/

相关文章:

security - X.509 与白名单例份验证

php - 为什么在使用 PHP cURL 时不需要避免 SSL 检查但可以请求 HTTPS 资源

ruby-on-rails - 为什么我的 Rails 应用程序中会出现使用 force_ssl 的无限重定向循环?

python - 如何在 Python 2.7 中处理 Httperror 303?

php - 网站什么时候向推荐人发回 200 OK?

c# - 在线连接 .aspx 需要哪些配置?

powershell - 在 PowerShell 中创建网络场

.htaccess - 如何使用 .htaccess 从 HTTPS 重定向中排除文件夹

asp.net - WCF 服务在/js 请求上返回错误 500

javascript - 将 HTTPS 值发送到浏览器的 PHP 脚本