Google Chrome将localhost重定向到https

Bre*_*the 325 google-chrome

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

我确实重新安装了Chrome,它解决了一天的问题.没有下载任何插件,第二天就会再次出现问题.

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

网络检查表演:请求URL:数据:text/html的,chromewebdata请求头临时标题显示的User-Agent:Mozilla的/ 5.0(Windows NT的6.3; WOW64)为AppleWebKit/537.36(KHTML,例如Gecko)Chrome浏览器/ Safari浏览器36.0.1985.143/537.36

这些选项卡中没有预览和响应数据.

Big*_*ump 522

我相信这是由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列表中永久排除localhost,请告诉我:)

更新 - 2017年11月

Chrome最近将此设置移至" 删除域名安全策略"下

在此输入图像描述

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

  • 如果你的localhost域是`.dev`,那么我认为这不起作用@Alison,因为截至最近发布的v.63 ......"Chrome通过预加载的HSTS将.dev域强制转换为HTTPS".因此,除非您拥有正确的签名SSL证书,否则.dev将完全不再起作用.不再允许自签名证书.[更多详情](https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/). (47认同)
  • 这是Chrome的总垃圾.当他们只是随意地开始强迫你在你那个疯狂的本地主机上使用HTTPS时,他们如何期望我们在本地开发?我已经使用了好几个月的一切,我在一个早上登录并得到这个废话来处理.这些"修复"都不适用于我. (23认同)
  • 我试图查询"localhost",但它说没有找到 (18认同)
  • 太令人沮丧了.但很高兴能找到原因. (4认同)
  • 我知道这是一个旧帖子,但任何想法如何解决,如果按照接受的答案查询localhost,它确实返回"未找到"?在这里尝试了所有评论和答案中的所有内容. (2认同)

Adi*_*rak 288

我在Chrome中遇到了同样的问题,我尝试使用BigJump的解决方案失败了.

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

确保您的地址栏使用http方案,然后执行这些步骤,可能需要几次:

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

  • 您还可以右键单击刷新/重新加载图标以转到_Hard Reload_菜单 (3认同)
  • 我无法让这个解决方案起作用.问题是它在https:// localhost:3000(在我的例子中)上进行了重新加载.尝试在重新加载之前更改协议但不起作用. (2认同)
  • 对我来说,这也很有效,只需稍作调整:我正在 Django 中开发几个应用程序,其中一个正在应用永久重定向。对旧地址进行硬重新加载会清除缓存,但地址仍然是旧的(而且是错误的)。但在第二次尝试时,更正地址栏中的地址就成功了。谢谢! (2认同)

Tre*_*vor 185

新发展!(如果你有Chrome 63+)

如果您的localhost域名是,.dev那么我不认为以前接受和工作的答案不再适用.这是因为Chrome 63 Chrome将通过预加载的HSTS强制.dev域到HTTPS.

这意味着,.dev除非你有正确的签名SSL证书,否则基本上根本不会工作 - 不再允许自签名证书!在此博客文章中了解更多信息.

因此,现在解决此问题并避免将来再次发生这种情况.test是一个推荐的域,因为IETF保留了它用于测试/开发目的.您还应该能够使用.localhost本地开发.

  • 这是_EXTREMELY_很烦人.当然必须有某种方式不要强迫我们改变我们的开发领域,对吧? (16认同)
  • 这些反直觉的默认值很糟糕.为什么要浪费时间调试他们的开发环境设置,或者只是猜测出现了什么问题,只是为了发现一切都没问题,谷歌Chrome浏览器默认将.dev重定向到HTTPS.逻辑在哪里?为什么.dev以及为什么不是其他TLD?绝对不直观. (12认同)
  • 用`.test`取代`.dev`也适用于Chrome 63 (5认同)
  • @Jeff尝试使用`.test` (4认同)
  • 我将所有.dev域名更改为.app,仍然是同样的问题.关于问题可能是什么的任何指示? (2认同)

tay*_*lıç 49

chrome://net-internals/#hsts 
Run Code Online (Sandbox Code Playgroud)

在删除域安全策略下输入 localhost,然后按删除按钮。

现在去

chrome://settings/clearBrowserData 
Run Code Online (Sandbox Code Playgroud)

勾选缓存图像和文件框,然后按单击按钮清除数据。


raf*_*whs 47

我遇到了同样的问题,但只在Chrome Canary中搜索解决方案我发现了这篇文章.

Chrome浏览器的下一个版本之一是要通过强制预装的HTTP严格传输安全(HSTS)头部被重定向到HTTPS协议.dev(并包含.foo)结尾的域名.

{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },
Run Code Online (Sandbox Code Playgroud)

因此,请更改您的域名.

  • 该死的,刚刚更新到Chrome 63,现在这对我影响了.dev.WTF.我不在乎它是否是有效的TLD,如果我不需要或想要或让我的网站使用SSL,那么请不要强迫它. (16认同)
  • 在这一天失去了一天.非常感谢 (8认同)
  • 哇这让我很生气.对于某些开发环境而言,它并不像更改tld那么简单.我现在正在寻找工作时间来改变我正在做的工作.这不是我们想要用于开发的业务. (6认同)
  • *这*是我来这里解决的问题.男人现在我得为我当地的开发网站提出一个不同的假tld ... (2认同)
  • 来自[wiki](https://en.wikipedia.org/wiki/.local),`.local`听起来有点脆弱,虽然我猜它比其他TLD更安全.我也撤回了`.localhost`的使用,因为看起来chrome做了一些原生的重定向,这似乎阻止了我的rproxy工作.`.test`似乎最安全,但由于命名空间与TDD /`.test()`方法等中使用的所有字符串冲突而笨拙. (2认同)

Ste*_*ton 46

捎带阿迪亚特穆巴拉克

无法刷新,因为它只是在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)
Run Code Online (Sandbox Code Playgroud)

  • 是.就是这个!简单明了.谢谢. (2认同)
  • 我使用的是 .local 域,当上面的 HSTS 解决方案不起作用时,这有效。 (2认同)

Tai*_* Ho 18

Chrome 63(自2017年12月起)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)标头重定向到HTTPS.你可以在这里找到更多相关信息.

  • ^^同上.它也在上周影响了我们的`.app`域名.我们暂时改用`.test`,虽然我不认为这是一个长期的解决方案. (2认同)

Ben*_*ler 13

打开Chrome Developer Tools-> 转到Network-> 选择Disable Cache-> 重新加载


use*_*582 11

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

没有任何选项修复对我有用,对于修复https://localhost:3000,这样做.

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

  • 如果您打开了开发人员工具栏,这应该适用于所有域 (3认同)

spe*_*rum 10

对于像我这样的懒人(在 Chrome 67 中工作)的懒惰和快速的解决方案。

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


小智 7

我是如何用 chrome 79 解决这个问题的:

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

它通过使用实验性功能帮助了我。


Bre*_*the 6

我从来没有想出问题的根源,但我能够解决这个问题.我删除了解决此问题的Google Chrome应用缓存文件夹.

C:\用户[用户] \应用程序数据\本地\谷歌\ Chrome浏览器

  • 我认为问题在于,当您使用HTTPS访问域时Chrome会存储,然后如果您再次访问同一域,则会自动切换到HTTPS.作为开发人员,它很痛苦,因为一旦您使用HTTPS访问任何localhost站点,突然所有locahost站点都会重定向到HTTPS. (5认同)

小智 6

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


Cal*_*Bot 6

这可能是由缓存的https重定向引起的,可以通过手动清除缓存来修复,如Adiyat Mubarak的回答.

但是,如果您正在访问localhost,您可能是开发人员,在这种情况下,您将找到缓存清除铬扩展名,例如"经典缓存杀手"(请参阅https://chrome.google.com/webstore/search/classic%20cache %20killer?hl = en)在各种情况下都很有用,可能已经安装了一个.

因此,快速解决方法是:安装缓存杀手(如果您还没有缓存杀手),打开它,然后重新加载页面.完成!


dio*_*lla 5

这些都不适合我.它是在带有本地URL的chrome更新(版本63.0.3239.84,linux)之后开始发生的.无论如何,总是会重定向到https.失去了几个小时,对此充满了耐心

究竟起了什么才能改变领域.

值得一提的是,域名是.app.也许它有事可做?然后将其更改为.test并且chrome停止重定向它


Ven*_*ndi 5

不幸的是,这里列出的解决方案都没有帮助我解决这个问题。我通过使用http://127.0.0.1(IP 地址)而不是http://localhost解决了这个问题。一个使用 Chrome 浏览器进行角度开发的快速小技巧。


kmg*_*mgt 5

尝试了提到的所有内容(浏览器首选项、hsts 等),但没有任何效果对我有用。

.localhost我通过在主机别名中添加尾随来解决这个问题。就我而言,Windows 下的这个文件:%windir%\system32\drivers\etc\hosts

像这样:

127.0.0.1    myproject.localhost
127.0.0.1    dev.project.localhost
Run Code Online (Sandbox Code Playgroud)