Google Chrome将localhost重定向到https

Google Chrome redirecting localhost to https

当我使用chrome调试Visual Studio项目时,浏览器尝试重定向到与我的网址相同的https。我没有在Web项目中启用SSL,并且起始URL是HTTP URL。当我使用firefox或ie进行调试时,我没有这个问题。

我确实重新安装了一天的Chrome。没有下载任何插件,第二天问题又出现了。

什么使chrome将本地主机重定向到https?

网络检查显示:请求URL:data:text/html,chromewebdata请求报头显示临时标题用户代理:Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(khtml,类似gecko)Chrome/36.0.1985.143 Safari/537.36

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


我相信这是由HST引起的-见http://en.wikipedia.org/wiki/http_strict_transport_security

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

例如,严格的传输安全:最大年龄=31536000;包括子域;预加载

…然后,根据max age的值,将来对localhost的请求将需要通过https提供服务。

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

  • 在chrome地址栏中键入"chrome://net internals/hsts"
  • 页面的最底部是查询域文本框-验证浏览器是否知道localhost。如果上面写着"找不到",那么这不是你要找的答案。
  • 如果是,请使用上面的文本框删除本地主机域
  • 您的站点现在应该可以使用普通的旧HTTP。

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

更新-2017年11月

Chrome最近已将此设置移动到"删除域安全策略"下

enter image description here

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


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

我通过强制刷新解决了我的问题,如本博客所示(最初来自于这个超级用户的答案)。

确保您的地址栏正在使用HTTP方案,然后执行这些步骤,可能有几次:

  • 打开开发人员工具面板(ctrl+shift+i)
  • 单击并按住重新加载图标/右键单击重新加载图标。
  • 将打开一个菜单。
  • 从该菜单中选择第3个选项("空缓存和硬重新加载")

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

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

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

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


    我也面临同样的问题,但只有在铬金丝雀和寻找解决方案,我发现了这篇文章。

    one of the next versions of Chrome is going to force all domains ending on .dev (and .foo) to be redirected to HTTPs via a preloaded HTTP Strict Transport Security (HSTS) header.

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

    所以,改变你的域名。


    背着阿迪亚特·穆巴拉克

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

    1
    2
    3
    4
    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)


    Chrome63(从2017年12月开始发布)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP Strict Transport Security(HSTS)头重定向到HTTPS。你可以在这里找到更多关于这个的信息。


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

    没有一个选项修复对我有效,对于修复https://localhost:3000,这是有效的。

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


    这可能是由缓存的HTTPS重定向引起的,可以通过手动清除缓存来修复,如Adiyat Mubarak的答案所示。

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

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


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

    C:users[用户]appdatalocalgooglechrome


    我也一直在努力解决这个问题。似乎HST只针对域名。因此,如果您是在本地计算机上开发的,那么使用IP地址就容易得多。所以我从本地主机切换到127.0.0.1


    这些都不适合我。它是在chrome更新(版本63.0.3239.84,Linux)和本地URL之后开始的。不管怎样都会重定向到HTTPS。在这个问题上损失了几个小时和很多耐心

    毕竟,真正起作用的只是改变域名。

    值得一提的是,域名是.app。也许有什么事要做?把它改为.test,chrome停止了重定向。


    chrome 63通过预加载的hsts强制.dev域自动转换为https。< BR>快速修复:只需将.dev域更改为.localhost。


    对于像我这样懒惰的人来说,这是一个懒惰而快速的解决方案(在Chrome67中工作)。

    只需在隐身模式下启动另一个Chrome窗口,使用"匿名窗口"选项(ctrl+shift+n)。不需要删除缓存,不需要深入到深度铬设置等。


    这不是解决方案,只是权宜之计。

  • 在解决方案资源管理器中单击您的Visual Studio项目(顶级),然后转到"属性"窗口。

  • 将启用的SSL更改为true。现在,您将在"属性"窗口中看到另一个端口号为"ssl url"。

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

  • 现在它可以作为一个SSL链接工作。


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


    不幸的是,这里列出的所有解决方案都没有帮助我解决这个问题。我使用http://127.0.0.1(IP地址)而不是http://localhost修复了这个问题。一个快速的小黑客与角开发与铬浏览器。


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

    最有可能与这一新法规有关:

    Chrome 63 (out since December 2017), will force all domains ending on .dev (and .foo) to be redirected to HTTPS via a preloaded HTTP Strict Transport Security (HSTS) header.

    你可以在这里找到更多关于这个的信息。

    使用:

    • Google Chrome 70.0.3538.110(官方版本)(64位)
    • NoDEJS V7.2.0

    对于有同样问题的人,我通过按ctrl+shift+delete只删除整个浏览器缓存来解决。现在我可以通过HTTP协议访问本地主机网站。


    最简单的方法

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


    @穆巴拉克的回答对我不起作用。当我试图清除缓存并重新加载时,页面仍然重定向到HTTPS。

    我的解决方案:在URL栏的右上角(就在"最爱之星"图标的左侧),有一个带有"x"的图标。右键单击它,它会说一些"不安全的脚本",然后有一个加载它们的选项。那样做。


    另一种选择是使用类似https://github.com/rchampourlier/tunnels的内容

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

    但是我使用RVM来进行隧道施工,我必须使用sudo gem install tunnelsssudo tunnelss


    这是当今最快的解决方案(2018年3月17日):

    关闭所有Chrome选项卡/Windows并在命令行上运行此命令:(或将其作为短代码添加)

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