谷歌Chrome重定向本地主机到https

当我调试Visual Studio项目使用Chrome浏览器尝试重定向到https相当于我的web地址。我没有在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,像壁虎)Chrome/36.0.1985.143 Safari/537.36

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

341040 次浏览
我从来没有找到问题的根源,但是我能够解决这个问题。 我删除了谷歌Chrome应用程序缓存文件夹,解决了这个问题

C: \[用户]\ AppData \用户本地\谷歌\ Chrome

我相信这是由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

  • 在页面的最底部有一个QUERY域文本框-验证浏览器是否知道localhost。如果上面写着“未找到”;那这不是你想要的答案。
  • 如果是,使用上面的文本框删除localhost域
  • 您的站点现在应该使用普通的旧HTTP工作

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


更新- 2017年11月

Chrome最近把这个设置移到了这个部分下面

删除域安全策略

enter image description here


更新- 2017年12月

如果您正在使用。dev域,请参阅下面的其他答案,因为Chrome(和其他)通过预加载的HSTS强制HTTPS。

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

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

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

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

我也一直在这个问题上挣扎。似乎HSTS仅用于域名。所以如果你是在本地机器上开发,使用IP地址要容易得多。所以我从localhost切换到127.0.0.1

@Adiyat Mubarak的回答对我没用。当我试图清除缓存并重新加载时,页面仍然重定向到https。

我的解决方案是:在url栏的右上角(就在收藏夹星形图标的左边)有一个带有“x”的图标。右键单击它,它会显示一些关于“不安全脚本”的内容,然后有一个选项可以加载它们。这样做。

搭载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)

我也面临着同样的问题,但只在Chrome金丝雀和寻找一个解决方案,我已经找到了这篇文章

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

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

所以,改变你的域名。

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

这些对我都没用。它开始发生在chrome更新(版本63.0.3239.84,linux)与一个本地URL。无论如何都会重定向到https。我在这上面浪费了很多时间和耐心

最终起作用的只是改变定义域。

不管怎样,域名是。app。也许是有什么事?只是把它改为。test和chrome停止重定向它

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

如果你的本地主机域是.dev,那么我认为以前接受的答案是行不通的。原因是因为自Chrome 63以来,Chrome将通过预加载的HSTS强制。dev域使用HTTPS。

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

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

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

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

当然,它增加了另一个依赖/设置,但它也允许在开发中测试https,这可能很好。

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

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

Chrome 63强制.dev域通过预加载的HSTS自动到HTTPS。
快速修复:只需将.dev域更改为.localhost。< / p >

这不是解决办法,只是个变通办法。

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

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

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

现在它作为SSL链接工作得很好

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)在各种情况下很有用,可能已经安装了一个。

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

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

关闭所有Chrome选项卡/窗口,并在命令行上运行以下内容:(或将其添加为短代码)

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

为像我这样的懒人(在Chrome 67中工作)提供了一个懒惰和快速的解决方案。

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

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

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

Chrome 63(自2017年12月发布)将强制所有以。dev(和。foo)结尾的域通过预加载的HTTP严格传输安全(HSTS)头重定向到HTTPS。

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

使用:

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

不幸的是,这里列出的解决方案都不能帮助我解决这个问题。我通过使用http://127.0.0.1 (ip地址)而不是http://localhost来修复这个问题。一个用chrome浏览器进行角开发的小技巧。

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

127.0.0.1   project1 project2 project3

除非发送@bigjump提到的HSTS响应,并且如果在项目之间来回更改,还可以维护登录会话,否则这些无域名称永远不会有HSTS问题。

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

只需粘贴这个url在你的搜索输入chrome: / /标志/ # allow-insecure-localhost

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

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

这个问题可能也会出现在2019年的VS上。这是由于“从Visual Studio ide中启用Javascript调试”导致的。VS附加到Chrome,这是一种可能,由于安全或谷歌和微软已知的原因,它有时无法附加,你有这个问题。我能够运行http和https与localhost从ASP net core 3.1应用程序。因此,在VS调试时,去运行与箭头>IIS express,就在“Web浏览器(Chrome)”下面;选择“脚本调试(已禁用)”;

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

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

总是退回到微软文档,以获得比谷歌更清楚的问题。

尝试了上面提到的所有方法(浏览器首选项、hsts等),但都不适合我。

我通过在主机别名后面添加.localhost来解决这个问题。在我的情况下,这个文件在windows: %windir%\system32\drivers\etc\hosts

是这样的:

127.0.0.1    myproject.localhost
127.0.0.1    dev.project.localhost

chrome://net-internals/#hsts

在“删除域安全策略”中输入localhost,按“删除”键。

现在转到

chrome://settings/clearBrowserData

选中“缓存的图像和文件”复选框,然后按“清除数据”按钮。

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

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

我把这个改为Allow,只是重新加载http版本,它加载正常。

希望这能帮助到人们。

我找不到任何解决办法;而是重定向到我的网络。配置允许我继续工作(localhost),直到我找到导致问题的原因。

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

它需要在你的系统中。& lt; / system.webServer>部分

    <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>

以我为例,我在Mac电脑上使用浏览器同步,浏览器不断将http://localhost:3000重定向到https://localhost:3000。

我使用代客服务本地网站,我已经运行valet secure在本地*。因为我在浏览器同步中代理这个HTTPS域,所以浏览器正在用HTTPS加载localhost:3000。

为了解决这个问题,我不得不:

  1. 运行valet unsecure删除SSL证书
  2. 运行valet restart
  3. 重启browser-sync
  4. 打开localhost:3000在浏览器(维瓦尔第在我的情况下,这是一个铬浏览器)
  5. 开放开发人员工具
  6. 勾选“禁用缓存”;在Network选项卡上
  7. 刷新页面

结果这个错误消息把我送进了兔子洞。

对我来说,问题是我试图在http上加载的页面未能返回响应(由于我的代码中的一个错误导致服务器崩溃)。

Chrome自动尝试https自动作为备份,所以,而不是看到实际的错误(页面超时),我看到SSL错误,这是一个红鲱鱼。

修复底层服务器崩溃导航回http://localhost:5000修复了我的问题。

对于像我这样在本地主机上运行Node.js express服务器的人来说,我有这段代码可以将http重定向到https:

const server = express()
.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] != 'https') {
res.redirect('https://' + req.headers.host + req.url)
} else {
next()
}
})

你必须确保它不会重定向localhost:

const server = express()
.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] != 'https' && req.headers['host'].indexOf("localhost") == -1) {
res.redirect('https://' + req.headers.host + req.url)
} else {
next()
}
})

chrome://net-internals/#hsts

在“删除域安全策略”下输入域,按“删除”键。