Google Chrome将localhost重定向到https


362

当我使用Chrome调试Visual Studio项目时,浏览器会尝试重定向到等效于我的网址的https。我没有在Web项目中启用SSL,并且起始URL是http URL。当我使用FireFox或IE进行调试时,我没有此问题。

我确实重新安装了Chrome,从而解决了一天的问题。没有下载任何插件,第二天又发生了问题。

是什么让Chrome将localhost重定向到https?

网络检查显示:请求URL:data:text / html,chromewebdata请求标头显示临时标头User-Agent:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 36.0.1985.143 Safari / 537.36

这些标签中没有预览,也没有响应数据。


网络检查器显示什么?
2014年

4
网络检查并没有显示太多。我什至看不到所请求的URL。请求URL:data:text / html,chromewebdata请求标头显示临时标头Cache-Control:no-cache语法:no-cache User-Agent:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,如Gecko )Chrome / 36.0.1985.143 Safari / 537.36
Brett Mathe

第六十三章:不断滚动寻找答案
北美,2017年

只需重新安装chrome,即可解决所有问题。现在是我的.dev,不再重定向到https。我希望我早些尝试..浪费那么多时间..
泰姬·汗

10
最近有这个问题的任何人,如果您想.dev用作本地域,这是一个全新的问题,因此我认为这些答案都不再可行。从Chrome 63开始...“ Chrome通过预加载的HSTS将.dev域强制为HTTPS”。因此,不再需要自签名SSL证书。显然.dev是一个真实域。谁知道。
Trevor

Answers:


591

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

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

例如。严格的运输安全性:max-age = 31536000; includeSubDomains; 预载

...然后根据max-age的值,将来需要通过HTTPS为localhost提供请求。

为了解决这个问题,我做了以下工作。

  • 在Chrome地址栏中,输入“ chrome:// net-internals /#hsts”
  • 页面的最底部是QUERY域文本框-验证浏览器是否知道localhost。如果显示“未找到”,则这不是您要查找的答案。
  • 如果是这样,请使用上面的文本框删除localhost域
  • 您的网站现在应该可以使用普通的旧HTTP了

这不是一个永久性的解决方案,但至少会使它在项目之间工作。如果有人知道如何将本地主机从HSTS列表中永久排除,请告诉我:)

更新-2017年11月

Chrome最近已将此设置移至“ 删除域安全策略”下

在此处输入图片说明

更新-2017年12月, 如果您使用的是.dev域,请参阅以下其他答案,因为Chrome(及其他)通过预加载的HSTS强制HTTPS。


6
真令人沮丧 但是很高兴找到原因。
Zapnologica 2015年

21
我尝试查询“本地主机”,但显示未找到
Chin

2
我知道这是一篇旧文章,但是有任何想法如何解决,如果按照接受的答案查询localhost时,它是否返回“未找到”?在这里尝试了所有评论和答案中的所有内容。
DarkW1nter

28
这是Chrome的总垃圾。当他们刚开始强迫您在怪异的本地主机上使用HTTPS时,他们如何期望我们在本地进行开发?我已经用了好几个月了,我每天早上登录并得到这份废话。这些“修补程序”都没有为我工作。
艾莉森

50
如果您的本地主机域是,.dev 那么我认为这在@Alison上不起作用,因为从v.63的最新版本开始……“ Chrome通过预加载的HSTS将.dev域强制为HTTPS”。因此,除非您具有适当的签名SSL证书,否则.dev基本上将不再起作用。不再允许自签名证书。更多细节
Trevor

308

我经历了在Chrome同样的问题,我曾尝试使用BigJump的解决方案

我通过强制硬刷新解决了我的问题,如本博客中所示(最初来自此SuperUser答案)。

确保您的地址栏使用http方案,然后执行以下步骤(可能几次):

  1. 打开“开发人员工具”面板(CTRL + SHIFT + I)
  2. 单击并按住重新加载图标/右键单击重新加载图标。
  3. 将打开一个菜单。
  4. 从此菜单中选择第三个选项(“空缓存和硬重载”)

3
您还可以右键单击刷新/重新加载图标以进入“ 硬性重新加载”菜单
-avjaarsveld

3
我无法使用此解决方案。问题是它在localhost:3000上进行了硬重载(在我的情况下)。尝试在重新加载之前更改协议,但这不起作用。
john_omalley

1
谢谢!!!如果您使用以下方法弄乱了startup.cs,它将恢复原始的localhost:port ... var options = new RewriteOptions()。AddRedirectToHttpsPermanent(); app.UseRewriter(options); }
hubert17 '18

通过按“ CTRL + SHIFT + R”为我重新加载,为我工作。
LP。贡萨尔维斯

在铬上,它是F12,而不是CTRL + SHIFT + I
冠军

190

新发展!(如果您使用的是Chrome 63+)

如果您的本地主机域是,.dev那么我认为以前接受的有效答案不再适用。这是因为从Chrome 63开始,Chrome将通过预加载的HSTS将.dev域强制为HTTPS。

这意味着,.dev除非您拥有正确的签名SSL证书,否则根本将不再起作用-不再允许使用自签名证书!在此博客文章中了解更多信息。

因此,现在建议解决此问题,并避免将来再次发生此问题,.test因为IETF将其保留用于测试/开发目的。您还应该可以.localhost用于本地开发人员。


2
我将所有.dev域都更改为.app,仍然是同样的问题。关于这个问题的任何指示?
杰夫

5
@Jeff尝试使用.test
Vitalii Zurian

18
烦人了。当然,必须有某种方法不迫使我们改变开发领域,对吗?
Emanuele Ciriachi

5
更换.dev.test曾在Chrome 63对我来说太
莱克纳特

12
这些违反直觉的默认设置非常糟糕。为什么要浪费时间调试他们的开发环境设置,或者只是猜测出了什么问题,才发现他们的一切都很好,而默认情况下是Google Chrome将.dev重定向到HTTPS。逻辑在哪里。为什么选择.dev,为什么不选择其他TLD?绝对不直观。
Meglio

50

捎带关闭Adiyat穆巴拉克

无法硬刷新,因为它只是在https上刷新。遵循一些相同的步骤。

1. Open chrome developer tools (ctrl + shift + i)
2. Network Tab at the top
3. Click Disable cache checkbox at the top (right under network tab for me).
4. Refresh page (while the developer tools is still open)

我第二次在这里寻求解决方案。非常感谢。
迷彩

1
我使用的是.local域,而上面的HSTS解决方案不起作用时,此域有效。
DiegoSalazar

这是尝试BigJump和Adiyat Mubarak的解决方案后对我唯一起作用的方法。
阿列克·阿索夫斯基

禁用缓存对我也是必要的。关闭Fiddler之后,我开始出现此问题。
CounterFlame

47

我面临同样的问题,但仅在Chrome Canary中,并且正在寻找解决方案,我发现了这篇文章

Chrome的下一版本将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)标头重定向到HTTP。

{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },

因此,更改您的域。


2
是我来这里解决的问题。男人,现在我要为我的本地开发站点提出一个不同的假顶级
域名

2
Wiki来说.local听起来有些脆弱,尽管我认为它比其他TLD更安全。我还撤消了.localhostcoz 的使用,似乎chrome进行了一些本机重定向,这似乎阻止了我的rproxy正常工作。.test看来最安全的,虽然笨重由于与所有那些在TDD /使用的字符串名称空间冲突.test()的方法等
dwelle

8
在这上失去了一天。非常感谢
Tonio

17
该死的,刚刚更新到Chrome 63,现在这对.dev产生了影响。WTF。我不在乎它是否是有效的TLD,如果我不需要,不想或让我的网站使用SSL,也不要强行使用它。
dbinott

6
哇,这让我生气。对于某些开发环境,这并不只是更改tld那样简单。我现在正在研究工作时间,以根据自己的工作情况对此进行更改。我想用于开发的并不是他们的事。
布雷特·托马斯

18

Chrome 63(自2017年12月开始发布)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP Strict Transport Security(HSTS)标头重定向到HTTPS。您可以在此处找到有关此的更多信息。


2
^^同上。.app上周也影响了我们的域名。.test尽管我认为这不是一个长期解决方案,但我们暂时转向。
russellmania

13

来自https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/

没有一个选项修复程序对我有用,对于修复程序https://localhost:3000,它确实可以。

单击并按住ReloadButton并选择Empty Cache and Hard Reload,这似乎只是一个选项localhost


这在我最后没有用。还有其他解决方案吗?
Raju Paladiya

最新的Chrome已更新,因此该解决方案将不再起作用。
user2167582

1
如果您打开了开发人员工具栏,则此方法应在所有域上都有效
Hussam

7

我也一直在努力解决这个问题。似乎HSTS仅用于域名。因此,如果您在本地计算机上进行开发,则使用IP地址要容易得多。所以我从本地主机切换到127.0.0.1


很好,但是是否可以确保每次键入localhost时,它将localhost替换为127.0.0.1?
西蒙(Simon)

非常感谢
hedha

6

我从未弄清楚问题的根源,但是我能够解决此问题。我删除了Google Chrome应用程序缓存文件夹,此问题已解决。

C:\ Users [用户] \ AppData \ Local \ Google \ Chrome


1
您是否松开了所有浏览器的历史记录或密码?
Zapnologica

7
我认为问题是Chrome会在您使用HTTPS访问域时存储,然后如果您再次访问同一域,它将自动切换到HTTPS。作为开发人员,这很痛苦,因为一旦您使用HTTPS访问任何本地主机站点,突然所有locahost站点都将重定向到HTTPS。
Dale K

1
@DaleBurrell你说的不对。这是由HSTS引起的:en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel

6

这可能是由于缓存的https重定向引起的,可以通过按照Adiyat Mubarak的回答手动清除缓存来解决。

但是,如果您访问本地主机,则可能是开发人员,在这种情况下,您会找到清除chrome扩展名的缓存,例如“经典缓存杀手”(请参阅https://chrome.google.com/webstore/search/classic%20cache %20killer?hl = zh-CN)可在多种情况下使用,并且可能已经安装了一种。

因此,快速的解决方法是:安装一个缓存杀手(如果您还没有缓存杀手),将其打开,然后重新加载页面。做完了!


这解决了问题
makdu

6

适用于像我这样的懒人的快速便捷解决方案(在Chrome 67中工作)。

只需在隐形模式下启动另一个Chrome窗口,即可使用“隐身窗口”选项(CTRL + SHIFT + N)。无需删除缓存,无需深入了解Chrome设置等。


1
我在其他建议上遇到了麻烦-可能是因为我需要同时打开多个不同的网页,所有这些网页都在同一域中,但在不同的服务器上,其中一些Web服务器使用https,其他使用纯HTTP。除“隐身窗口”外,其他所有功能均无效!
Klaws

这可行,但是由于临时标头,这使我的AJAX请求非常慢。
树枝

5

这些都不对我有用。在使用本地URL进行Chrome更新(版本63.0.3239.84,Linux)之后,它开始发生。无论如何,始终将重定向到https。浪费了一些时间,对此非常耐心

毕竟行之有效的只是更改域名。

对于什么值,域名是.app。也许有事情要做?并将其更改为.test,chrome停止重定向它


5

我如何使用Chrome 79解决此问题:

只需将此网址粘贴到您的搜索输入中chrome:// flags /#allow-insecure-localhost

通过使用实验功能,它对我有所帮助。



1

就我而言,我将项目路径设置为/Users/me/dev/project_root/,并从那里运行nodeJS/ express服务器。重命名我的/Users/me/project_root(删除dev从项目路径)解决了该问题。

最有可能与这项新规定有关:

Chrome 63(自2017年12月起)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP Strict Transport Security(HSTS)标头重定向到HTTPS。

您可以在此处找到有关此的更多信息

使用:

  • Google Chrome版本70.0.3538.110(正式版本)(64位)
  • nodeJS v9.2.0

1

一个简单的解决方案是编辑/etc/hosts文件并为每个项目建立一个别名。

127.0.0.1   project1 project2 project3

除非您发送@bigjump提及的HSTS响应,否则这些无域名称将永远不会对HSTS产生问题,并且如果您在项目之间来回切换,则具有保持登录会话的附加好处。


0

转到Chrome中的设置,然后转到高级设置,在隐私和安全部分下,单击清除浏览数据,然后清除所有数据。我遵循了这些步骤,它为我工作。希望它能帮助一些人。


0

Chrome 63会通过预加载的HSTS强制将.dev域自动转换为HTTPS。
快速修复:只需将.dev域更改为.localhost。


0

这不是解决方案,只是一种解决方法。

  1. 在解决方案资源管理器中单击Visual Studio项目(顶层),然后转到属性窗口。

  2. 将“已启用SSL”更改为true。现在,您将在属性窗口中看到另一个端口号,即“ SSL URL”。

  3. 现在,当您运行应用程序(或在浏览器中查看)时,必须在地址栏中手动将端口号更改为SSL端口号。

现在,它可以很好地用作SSL链接



-1

对于遇到相同问题的用户,我可以通过按CTRL + SHIFT + DELETE来删除整个浏览器缓存来解决。现在,我可以使用HTTP协议访问本地主机网站。


-2

@Adiyat Mubarak的答案对我不起作用。当我尝试清除缓存和硬重装时,页面仍重定向到https。

我的解决方案:在网址栏的右上角(在收藏夹星形图标的左侧),有一个带有“ x”的图标。右键单击它,它会说一些有关“不安全脚本”的信息,然后有一个选项可以继续加载它们。去做。


您知道此选项的名称是什么,还是在其他地方可以找到它?我在网址栏中看不到快捷方式。
卡罗琳·康威

@CarolynConway我不确定它叫什么。它可能只出现在我的特定问题上。
cph2117

-2

另一种选择是使用类似https://github.com/rchampourlier/tunnelss的东西

当然,它添加了另一个依赖项/设置,但是它还可以在开发人员中测试https,这可能很好。

我使用RVM,但是要使用必须使用的隧道sudo gem install tunnelsssudo tunnelss


-4

这是今天最快的解决方案(17-3-2018):

关闭所有Chrome标签页/窗口,然后在您的命令行上运行以下命令:(或将其添加为简码)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.