Visual Studio 网站在调试时将 http 重定向到 https

Posted

技术标签:

【中文标题】Visual Studio 网站在调试时将 http 重定向到 https【英文标题】:Visual Studio website is redirecting http to https when debugging 【发布时间】:2014-12-17 13:28:45 【问题描述】:

我遇到了 IIS express 或 Visual Studio 2013 的问题。

该站点没有在属性中启用或设置 https 或 ssl。

当我单击调试时,该站点在浏览器中启动并尝试加载: http://localhost:61488/Default.aspx

然后由于某种原因自动重定向到: https://localhost:61488/Default.aspx 然后我在 chrome 中得到一个Error code: ERR_SSL_PROTOCOL_ERROR

我不太确定该怎么办?

【问题讨论】:

【参考方案1】:

我在网络配置中有一个重定向,即使在更改后它仍然在重定向。删除 .csproj.user 文件为我解决了这个问题。

【讨论】:

【参考方案2】:

我相信这是由 HSTS 引起的 - 请参阅 http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

如果您有(开发)任何其他发送 HSTS 标头的本地主机站点...

例如。严格的传输安全性:max-age=31536000;包括子域;预加载

...那么根据 max-age 的值,未来对 localhost 的请求将需要通过 HTTPS 提供服务。

为了解决这个问题,我做了以下事情。

在 Chrome 地址栏中输入“chrome://net-internals/#hsts” 页面的最底部是查询域文本框 - 验证浏览器是否知道 localhost 如果是,使用上面的文本框删除本地主机域 您的网站现在应该可以使用普通的旧 HTTP 工作了

这不是一个永久的解决方案,但至少可以让它在项目之间工作。如果有人知道如何从 HSTS 列表中永久排除 localhost,请告诉我:)

更新 - 正如an answer below 中所指出的,您可能需要在执行上述步骤后清除浏览器缓存,以使浏览器完全“忘记”本地主机的 HSTS 信息。

【讨论】:

谢谢,这帮助了我。我欠你的!! 你是男人!!,工作得像个魅力! 但是查询时如果不在列表中怎么办? :( @jag 那么它可能不是 HSTS,而是其他一些答案所指的其他东西。例如。 Controller 上的 RequireHttps 属性或缓存的重定向。 是的,我们的开发环境中仍然有一些规范代码仍然处于活动状态,这些代码重定向到 HTTPS。 /掌脸【参考方案3】:

如果一切都失败了,请尝试清除浏览器缓存。我尝试了上面提到的所有解决方案 - 也许它们有所帮助,但在清除浏览器缓存后,显然一切都恢复了正常。

【讨论】:

这对我有用!该项目已在 Release 中运行过一次,它强制使用 HTTPS。之后,Chrome 总是进行重定向。清除缓存解决了这个问题。【参考方案4】:

我遇到的一个问题是类似的。 我运行了一个 HTTPS 重定向,然后在通过 localhost 确认它可以工作后,我将其取出。 再次运行程序后,它继续重定向我的本地主机。然后我清除了 VS 正在运行的 Chrome 浏览器上的缓存。一切都恢复了正常。 ~ 视觉工作室 2017

【讨论】:

是的!在 web.config 中删除 HSTS 代码后,Chrome 会继续重定向到 HTTPS,除非缓存被清除。非常感谢!! 这对我也有用。不过,这很奇怪。我没想到这是一个缓存问题,因为从 http 切换到 https 时我没有遇到任何问题。 +1【参考方案5】:

移除 HomeController 上方的 [RequireHttps] 属性。

【讨论】:

这也可能是问题所在,我记得在某个时间点启用它 如果您的网站需要 RequireHttps 怎么办?

以上是关于Visual Studio 网站在调试时将 http 重定向到 https的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 调试器在鼠标悬停时将日期时间显示为刻度,而不是可理解的日期字符串格式

Visual Studio 2022的一个惊艳新功能开发隧道

网站在visual studio调试正常,在IIS下就会出问题?

远程调试 Azure 网站一个 Visual Studio 2017 项目

Visual Studio调试之断点技巧篇

如何在没有Javascript调试的情况下在网站启动时在Visual Studio中启动新的Chrome实例?