为什么 IIS 在手机上会使 http 请求超时,但可以接受 https?

为什么 IIS 在手机上会使 http 请求超时,但可以接受 https?

我跟着此解决方案关于如何将 http 重定向到 https。它在 PC 上有效,但由于某种原因在手机上无效(我确定在 iPad 或平板电脑上也无效)。您可以测试网站这里。我认为 IIS 忽略了手机上的 http 请求,但我不知道为什么会这样。如果我在手机上测试时等待的时间足够长,就会出现 err_connection_timed_out。在手机上连接到 https 工作正常。

我使用以下方法安装了失败请求跟踪本指南。当我在手机上测试(http)时,它没有记录任何内容。当测试 https 时,它会记录(代码 200)。在指南中,他们要求我记录 200-399 代码,但为了确保万无一失,我将其更改为 200-999,但这并没有什么区别。

有没有办法记录超时请求或找出它无法加载的原因?

这是我的 web.config 文件:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.web>
        <customErrors mode="Off" />
        <compilation debug="true" />
    </system.web>
    <system.webServer>
    <rewrite>
           <rules>
              <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
                 <match url="*" ignoreCase="true" negate="false" />
                 <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                    <add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
                 </conditions>
                 <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
              </rule>

        <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{R:1}" pattern="\.(gif|jpe?g|png)$" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php/{R:1}" />
                </rule>
           </rules>
        </rewrite>
    <security>
            <requestFiltering allowDoubleEscaping="true">
                <requestLimits maxUrl="3000000" maxQueryString="3000000" />
            </requestFiltering>
     </security>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.php" />
            </files>
        </defaultDocument>
        <urlCompression doDynamicCompression="true" />
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="WWW Server" areas="Rewrite" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:00" statusCodes="200-999" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>
</configuration>

在 IIS 的高级设置中,我将HSTS -> http to https redirecttrue设置HSTS -> enabledtrue。在 SSL 设置中,我取消选中了require SSL按钮。我使用的是 IIS 版本 10.0。

这家伙似乎有同样的问题,只是不特定于 http。也许该问题中的信息有助于回答这个问题。

答案1

我认为问题在于端口 80 被关闭,只接受端口 443。这使得服务器忽略任何 http 请求,并且不重定向它们。它在 PC 上工作似乎是一种假象。我相信是缓存让它工作了。

因此,打开端口 80 可以解决我的问题。

相关内容