Google Chrome将localhost重定向到https

时间:2014-08-13 03:14:45

标签: google-chrome

当我使用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

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

31 个答案:

答案 0 :(得分:476)

我认为这是由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最近将此设置移至删除域安全政策

enter image description here

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

答案 1 :(得分:268)

我在Chrome中遇到了同样的问题,但我尝试使用BigJump's solution失败了。

我通过强制进行硬刷新修复了我的问题,如blog所示(最初来自此SuperUser answer)。

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

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

答案 2 :(得分:180)

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

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

这意味着,.dev基本上根本不会起作用,除非你有正确的签名SSL证书 - 不再允许自签名证书! Learn more at this blog post.

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

答案 3 :(得分:47)

我遇到同样的问题,但仅限于 Chrome Canary 并搜索我找到this post的解决方案。

  

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

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

因此,请更改您的域名。

答案 4 :(得分:43)

捎带Adiyat Mubarak

无法刷新,因为它只是在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)

答案 5 :(得分:18)

Chrome 63(自2017年12月起)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)标头重定向到HTTPS。 You can find more information about this here.

答案 6 :(得分:10)

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

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

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

答案 7 :(得分:7)

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

答案 8 :(得分:6)

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

答案 9 :(得分:6)

这可能是由缓存的https重定向引起的,可以通过手动清除缓存来修复,就像在Adiyat Mubarak的回答中一样。

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

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

答案 10 :(得分:6)

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

C:\用户[用户] \应用程序数据\本地\谷歌\铬

答案 11 :(得分:5)

这些都不适合我。它是在带有本地URL的chrome更新(版本63.0.3239.84,linux)之后开始发生的。无论如何,总是会重定向到https。在这个

上花了几个小时和很多耐心

究竟什么才能改变域名。

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

答案 12 :(得分:4)

转到 chrome://net-internals/#hsts。在删除域安全策略下输入 localhost 并按删除按钮。

现在转到 chrome://settings/clearBrowserData,勾选缓存图像和文件框,然后点击清除数据按钮。

答案 13 :(得分: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。

您可以找到有关此here的更多信息。

使用:

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

答案 14 :(得分:1)

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

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

答案 15 :(得分:1)

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

答案 16 :(得分:0)

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

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

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

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

  4. 现在它作为SSL链接正常工作

答案 17 :(得分:0)

转到Chrome中的设置,然后转到高级设置,在隐私和安全部分下单击清除浏览数据,然后清除所有数据。我按照这些步骤操作,它对我有用。希望它有所帮助。

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

127.0.0.1   project1 project2 project3

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

答案 20 :(得分:0)

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

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

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

答案 21 :(得分:0)

该问题也可以在VS 2019中复制。这是由于“从Visual Studio IDE启用Java脚本调试”引起的。 VS会附加到Chrome,由于安全性或Google和Microsoft已知的原因,有时VS可能无法附加,因此您可能会遇到此问题。我可以从ASP net core 3.1应用程序使用localhost运行http和https。因此,在VS中进行调试时,请使用箭头-> IIS express运行,在“ Web浏览器(Chrome)”下方,选择“脚本调试(已禁用)”。

查看文章:https://devblogs.microsoft.com/aspnet/client-side-debugging-of-asp-net-projects-in-google-chrome/

https://docs.microsoft.com/en-us/visualstudio/debugger/debugging-web-applications?view=vs-2019

总是回退到Microsoft文档,以比查找问题更清晰。

答案 22 :(得分:0)

尝试了所有提及的内容(浏览器首选项,hsts等),但对我没有任何帮助。

我通过在主机别名后添加.localhost来解决此问题。

赞:

127.0.0.1    myproject.localhost
127.0.0.1    dev.project.localhost

答案 23 :(得分:0)

对我来说,以下内容在 Chrome 90 中有效。我的应用在 localhost:3000 上打开了一个本地 webpack 服务器,它自动重定向到 HTTPS,我得到了 ERR_SSL_PROTOCOL_ERROR

我点击了 URL 旁边的小信息图标,从菜单下拉菜单中打开了站点设置。在列表中,Insecure content 被设置为 Block (default)

我将其更改为 Allow,然后重新加载了 http 版本,并且加载正常。

希望这对人们有所帮助。

答案 24 :(得分:0)

我无法找到任何解决方案;但是我的 web.config 中的重定向允许我继续工作(本地主机),直到我找到导致问题的原因。

这本质上是一个将HTTPS转为HTTP的重写规则;它似乎覆盖了之前将 HTTP 重定向到 HTTPS 的规则。

它需要在 web.config 中的 部分

    <rewrite>
  <rules>
    <clear />
    <rule name="Redirect to https" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>

答案 25 :(得分:0)

就我而言,我在 Mac 上使用浏览器同步,浏览器不断将 http://localhost:3000 重定向到 https://localhost:3000。

我正在使用 Valet 为本地站点提供服务,并且我已在本地 *.test 域上运行 valet secure 以为其提供 SSL 证书。因为我在浏览器同步中代理了这个 HTTPS 域,所以浏览器正在使用 HTTPS 加载 localhost:3000。

要修复它,我必须:

  1. 运行 valet unsecure 以删除 SSL 证书
  2. 运行valet restart
  3. 重启浏览器同步
  4. 在浏览器中打开 localhost:3000(Vivaldi 在我的例子中是 Chromium 浏览器)
  5. 打开开发者工具
  6. 在“网络”选项卡上勾选“禁用缓存”
  7. 刷新页面

答案 26 :(得分:-1)

对于遇到相同问题的人,我通过按CTRL + SHIFT + DELETE来删除整个浏览器缓存。现在我可以通过HTTP协议访问我的localhost网站。

答案 27 :(得分:-1)

最简单的方法

在其他浏览器中运行代码。然后重新打开相同的浏览器,即从Visual Studio中更改浏览器。

答案 28 :(得分:-2)

另一种选择是使用https://github.com/rchampourlier/tunnelss

之类的东西

当然它添加了另一个依赖/设置,但它也可以在dev中测试https,这可能很不错。

我使用RVM然后使用隧道工作我必须使用sudo gem install tunnelsssudo tunnelss

答案 29 :(得分:-2)

@Adiyat Mubarak回答对我不起作用。当我尝试清除缓存并进行硬重新加载时,页面仍然重定向到https。

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

答案 30 :(得分:-4)

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

关闭所有Chrome标签/窗口并在您的命令行上运行:(或将其添加为短代码)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors