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

62

我在使用IIS express或Visual Studio 2013时遇到了问题。

该网站的属性中没有启用或设置https或ssl。

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

然后由于某种原因自动重定向到:https://localhost:61488/Default.aspx,随后我在Chrome浏览器中收到一个Error code: ERR_SSL_PROTOCOL_ERROR错误。

我不太确定该怎么办?

5个回答

124

我认为这是由HSTS引起的——请参见http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

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

例如Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

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

为了解决这个问题,我做了以下几步。

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

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

更新 - 如下面的答案中指出的,在执行上述步骤后,您可能需要清除浏览器缓存,以让浏览器完全“忘记”localhost的HSTS信息。


但是如果在查询时它不在列表中呢?:( - Jag
1
@jag 那很可能不是HSTS,而是其他一些答案所提到的东西。例如,控制器上的RequireHttps属性或缓存的重定向。 - BigJump

30

有一个类似的问题也发生在我身上。 我进行了 HTTPS 重定向,然后通过本地主机确认它可以工作后,我将其移除了。 再次运行程序后,它仍然将本地主机重定向。之后我清除了 VS 运行的 Chrome 浏览器缓存。一切恢复正常。 ~ Visual Studios 2017


1
是的!在web.config中删除HSTS代码后,Chrome仍然会重定向到HTTPS,除非清除缓存。非常感谢!! - Shiva Naru
1
这对我也起作用了。不过很奇怪,我没想到这会是缓存问题,因为我在从http切换到https时没有遇到任何问题。+1 - Alan

10

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


这也可能是问题所在,我记得曾经启用过它。 - Zapnologica
如果您的网站需要RequireHttps怎么办? - Christine

7

如果其他方法都无效,尝试清除浏览器缓存。我已经尝试了上面提到的所有解决方案 - 也许它们有所帮助,但在清除浏览器缓存后,一切都恢复正常。


1
这对我有用!该项目曾在发布模式下运行过一次,这强制使用了HTTPS。此后,Chrome总是进行重定向。清除缓存解决了问题。 - Synesthetic Symphony

1

我在web config中进行了重定向,即使更改了它仍然会重定向。删除.csproj.user文件解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接