azure 此站点无法提供安全连接

00jrzges  于 2023-01-27  发布在  其他
关注(0)|答案(6)|浏览(140)

当我添加网址重写代码在webconfig,然后将其发布到azureconfig。它会自动重定向到https,即使我试图访问网站与http。

<rewrite>
  <rules>
    <rule name="Redirect to https">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTPS}" pattern="Off"/>
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
    </rule>
  </rules>
</rewrite>

但是当我在本地机器上运行相同的代码时,它会出现下面的错误。

此站点无法提供安全连接

当我在本地机器上运行上述代码时,如何解决上述错误?

dxpyg8gm

dxpyg8gm1#

我个人所做的就是将重写的配置放入Web.Release.config中,因为让它在本地工作有点麻烦。
问题是IIS Express将在不同的端口上公开HTTP和HTTPS,因此如果您从http://localhost:1234重定向到https://localhost:1234,它根本不起作用,因为IIS Express在https://localhost:44300之类的端口上公开HTTPS。
您可以在IIS Express上启用SSL/TLS(您应该这样做),但我会将重写规则仅保留给Release模式。
下面是一个示例Web.Release.config文件:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
  <system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <!-- Redirects users to HTTPS if they try to access with HTTP -->
        <rule
          name="Force HTTPS"
          stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/>
          </conditions>
          <action
            type="Redirect"
            url="https://{HTTP_HOST}/{R:1}"
            redirectType="Permanent"/>
        </rule>
      </rules>
      <outboundRules>
        <!-- Enforces HTTPS for browsers with HSTS -->
        <!-- As per official spec only sent when users access with HTTPS -->
        <rule
          xdt:Transform="Insert"
          name="Add Strict-Transport-Security when HTTPS"
          enabled="true">
          <match serverVariable="RESPONSE_Strict_Transport_Security"
              pattern=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="on" ignoreCase="true" />
          </conditions>
          <action type="Rewrite" value="max-age=31536000" />
        </rule>
      </outboundRules>
    </rewrite>
  </system.webServer>
</configuration>

注意,我还在这里添加了HSTS,它在发布模式下将<rewrite>元素插入Web.config,而<system.webServer>元素已经存在于Web.config中,否则我将插入它。

dfty9e19

dfty9e192#

这总能为我解决问题。

  • 在解决方案资源管理器中,单击您的项目。
  • 按F4键(查看属性)。
  • 复制URL(不是SSL URL)。
  • 将URL粘贴到“Web”选项卡上的“项目URL”中,然后单击“保存”。
  • 在解决方案资源管理器中,单击您的项目。
  • 按F4键(查看属性)。
  • 将SSL启用更改为false。
  • 将其改回true。应该有一个新的SSL URL。复制它。
  • 将新的SSL URL粘贴到“Web”选项卡上的“项目URL”中。单击“创建虚拟目录”。
  • 单击覆盖应用程序根URL,然后粘贴SSL URL。保存。
wrrgggsh

wrrgggsh3#

您必须将Visual Studio服务器配置为与HTTPS一起使用。有关详细信息,请访问此链接:
HTTPS with Visual Studio's built-in ASP.NET Development Server

mzsu5hc0

mzsu5hc04#

我用旧版本的Chrome网络浏览器解决了这个问题。
这是list of older chrome versions,您可以在其中下载并安装它。
60.0.3112.90 -对于Ubuntu来说是一个很适合我的版本。
也许它的速度有点慢,然后更新的版本,但我发现它是相当不错的生产(:

c2e8gylq

c2e8gylq5#

在我这边,我发现有一个javascript代码将站点从http重定向到https。因此,尝试探索您的环境,如果有其他代码负责这个问题。希望这能有所帮助。谢谢

7gyucuyw

7gyucuyw6#

我刚刚更改了项目属性的Web选项卡中的URL,以使用以443开头的PORT,例如44301。另外,请确保将http更改为https。这对我很有效。

相关问题