当我使用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
这些选项卡中没有预览和响应数据。
- 网络检查员在显示什么?
- 网络检查根本没有显示太多。我甚至看不到请求的URL。请求URL:data:text/html,chromewebdata请求头显示临时头缓存控制:无缓存pragma:no缓存用户代理:mozilla/5.0(Windows NT 6.3;wow64)applewebkit/537.36(khtml,类似gecko)chrome/36.0.1985.143 safari/537.36
- Chrome63:继续滚动寻找答案
- 只要重新安装我的Chrome就可以解决所有问题。现在我的.dev不再重定向到https了。我真希望我早点试试看。浪费了这么多时间……
- 任何最近有这个问题的人,如果你想用.dev作为你的本地Doman,这是一个全新的问题,所以我认为这些答案中的任何一个都不再有效。从铬63……"chrome通过预加载的hsts将.dev域强制为https"。因此不再有自签名的SSL证书。显然,Dev是一个真正的领域。谁知道呢。
- 当我在Mac上从Chrome62升级到63时,我也不能使用.app。我不得不使用.test。
- 但是当我所做的是将域从.app改为.appp时,它可以与chrome一起正常工作。有人能告诉我那个吗
- 也发生在我身上的铬74.0.3729.131。我有几个本地主机项目。devtools没有显示太多。但是在dev tools启动的情况下,右击refresh执行了一个空缓存/硬重载,这使我现在可以输入https。与下面的答案有些关联,但步骤较少。
我相信这是由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最近已将此设置移动到"删除域安全策略"下
更新-2017年12月如果您使用.dev域,请参阅下面的其他答案,因为chrome(和其他)通过预加载的hsts强制使用https。
- 这正是重点!谢谢!
- 真令人沮丧。但很高兴找到原因。
- 漂亮简单正确的答案!谢谢!
- 我试图查询"localhost",但它说找不到
- 您也可以在其他浏览器(如IE)中尝试。
- 对于使用边缘的用户,清除浏览数据具有相同的效果。
- 我知道这是一篇老文章,但是如果在按照接受的答案查询localhost时,它没有返回"未找到",您知道如何解决这个问题吗?在这里尝试了所有评论和答案。
- 我也有同样的问题。但是这个解决方案不起作用。在"chrome://net internals/hsts"上找不到本地主机….
- 这完全是铬的垃圾。当他们随意地强迫你在你的异常本地主机上使用https时,他们怎么期望我们在本地开发呢?我已经用了好几个月了,我有一天早上登录,让这个垃圾处理。这些"修复"对我来说都不起作用。
- 如果您的本地主机域是.dev,那么我认为这在@alison上不起作用,因为最近发布的v.63…"chrome通过预加载的hsts将.dev域强制为https"。因此,.dev基本上不会再工作了,除非您有适当的签名SSL证书。不允许再使用自签名证书。更多细节。
- 你救了我@trevor,我把它们都换成了本地的,一切都恢复正常了!
- @特雷弗,你得回答这个问题。
- @ HeyHeyJC…好吧,我把这个贴出来作为答案。我原以为把它写在评论里就行了,但事实上,在许多评论中可能会遗漏它,所以把它作为一个答案也很方便。
- @特雷弗看到并投了赞成票。恭喜你不要在谷歌大喊大叫。我不会那么拘谨的。
- @Trevor我正要去邮寄,然后才看到你关于.dev被强制使用https的评论。Safari和Chrome都是为我做的。把.dev改成了其他任何东西,它起作用了。太感谢你了。把我逼疯了!哈哈
- 如果您使用Laravel代客泊车服务,请通过valet domain test更改您的停放工作目录tld。
- 如果它对任何人都有帮助,我就关闭了捕获事件,但它对我来说不起作用。我必须再次回到页面,捕获正在运行的事件,以便它工作。
- "删除"按钮没有做任何事情,正如我在这里报告的。单击"删除"后,当我在"查询hsts/pkp域"中检查域时,它仍然显示应该删除的信息,就好像我没有要求它删除一样。
- 非常感谢你
- 删除在我这边不起作用。
- 这绝对不适合我…
- 哥们,几个小时的挖掘之后,这是唯一的解决办法——这很管用!
我在Chrome中也遇到了同样的问题,我尝试使用BigJump的解决方案失败。
我通过强制刷新解决了我的问题,如本博客所示(最初来自于这个超级用户的答案)。
确保您的地址栏正在使用HTTP方案,然后执行这些步骤,可能有几次:
打开开发人员工具面板(ctrl+shift+i)
单击并按住重新加载图标/右键单击重新加载图标。
将打开一个菜单。
从该菜单中选择第3个选项("空缓存和硬重新加载")
- 您也可以右键单击刷新/重新加载图标以进入硬重新加载菜单。
- 我不能让这个解决方案发挥作用。问题是它在localhost:3000上执行了一次硬加载(在我的例子中)。试图在重新加载之前更改协议,但这不起作用。
- 谢谢您!!!!这将恢复原来的localhost:port,如果您把startup.cs弄得一团糟…var options=new rewriteOptions().addRedirectToHttpSperManent();app.userWriter(options);
- 通过按"ctrl+shift+r"进行硬重载为我工作。
- 在Chromium上,它是F12而不是ctrl+shift+i
- 这是有效的!谢谢
- 它起作用了,谢谢。
- 我不需要用这个,但很高兴知道。书签!
- 这对我很管用——以为我疯了,无缘无故重新发行了我的证书。-)
- 天哪,这真让人讨厌。在所有的修复中,这个是为我做的。在我不得不在Chrome中从hsts设置页面中删除域技巧之前(不管是什么愚蠢的原因,我都不再工作了)。铬人,到底怎么回事?请不要浪费开发人员的时间!
- 对我来说,这是可行的,只是稍作调整:我正在Django的几个应用程序上工作,其中一个应用程序正在应用永久重定向。在旧地址上执行硬重新加载会清除缓存,但该地址仍然是旧的(并且是错误的)。但在第二次尝试中,更正地址栏中的地址就成功了。谢谢!
新发展!(如果您有Chrome 63+)
如果您的本地主机域是.dev,那么我认为以前接受的和有效的答案不再适用。这是因为从chrome 63开始,chrome将通过预加载的hsts强制.dev域使用https。
这意味着,除非您有适当的签名SSL证书,否则.dev基本上不会再工作了——不允许有更多的自签名证书!在此博客文章中了解更多信息。
因此,为了现在解决这个问题并避免将来再次发生这种情况,.test是一个推荐的领域,因为它是IETF为测试/开发目的而保留的。您还应该能够使用.localhost进行本地开发。
- 这是我的问题。如果本地安装了Apache虚拟主机,则可以尝试将添加到vh配置中:serveAlias sitename.test serveAlias www.sitename.test add:sitename.test添加到/etc/hosts重新启动Apache。#必要时更新链接
- 我把所有的.dev域都改为.app,仍然是同一个问题。有什么关于问题可能是什么的建议吗?
- 嗯。你应该按照建议使用.test或.localhost。我不确定.app是否是另一个域,chrome是强制重新定向到https的,但由于这是一个真正的域,而它是谷歌拥有的另一个域,无论哪种方式,都是一种风险,而且很可能是问题所在。
- 那是给我的,谢谢!
- 以东十一〔1〕也不为我工作,但以东十一〔0〕为我工作。谢谢!
- @杰夫试着用.test。
- 测试而不是打开项目谷歌搜索,原因是什么?
- @Kailashvele谷歌认为这是一个搜索查询。把一个/放在它的末尾,就像project.test/一样。谷歌会把它缓存起来,这样你就不用再输入了。
- 这非常烦人。当然,一定有办法不强迫我们改变我们的发展领域,对吧?
- 用.test替换.dev在Chrome63中也为我工作。
- 这些违反直觉的默认值是可怕的。为什么要浪费时间调试他们的dev环境设置,或者只是猜测出哪里出了问题,仅仅是为了发现一切都正常,他们这边的谷歌Chrome默认将.dev重定向到https。逻辑在哪里?为什么是.dev,为什么不是其他TLD?绝对不是直觉。
- 救命!如此恼人的默认行为!
- 谢谢你的好意,我抓伤了头。
- 令人惊叹的!我绞尽脑汁想知道为什么我的虚拟主机不能工作。这个自动https的chrome问题就是问题所在。我想用比.test更能证明未来的东西,所以我用我的首字母创建了somelocalsite.ehw,它运行得很好。现在我终于可以继续这个lynda.com强调教程了。
我也面临同样的问题,但只有在铬金丝雀和寻找解决方案,我发现了这篇文章。
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" }, |
所以,改变你的域名。
- 这是我来这里解决的问题。伙计,现在我要为我的本地开发网站设计一个不同的假TLD…
- 所以我们应该探讨使用.test或.localhost。
- 我和.local一起去
- 在wiki上,.local听起来有点脆弱,尽管我猜它比其他TLD更安全。我也在收回使用.localhost,因为Chrome似乎做了一些本地重定向,这似乎阻止了我的Rproxy工作。.test似乎最安全,尽管由于名称空间与TDD/.test()方法中使用的所有字符串冲突而显得笨重。
- 这是我的问题。该死。
- 为此损失了一天时间。谢谢
- 神圣的怪胎!他们为什么要这样做?啊!.dev是有效的tld!现在说得通了。不要使用,DEV!
- .test是一个特殊的保留TLD,应该保持安全。
- 该死的,刚刚更新到Chrome63,现在这对我的.dev.wtf有影响。我不在乎它是否是有效的TLD,如果我不需要或不想要或让我的站点使用SSL,那么不要强迫我使用它。
- 哇,这让我很生气。对于某些开发环境来说,改变TLD并不像改变TLD那么简单。我现在在看工作时间来改变我正在做的事情。我想用TLD开发的并不是他们的业务。
- 这一变化也浪费了很多时间。谷歌,这次你真的超越了自己。现在是时候切换回火狐了。新版本比新的IE6 Chrome快10倍。我走了。
- 真正让我恼火的是,我继续购买了.dev域,并将A记录设为127.0.0.1,这样我们就可以标准化我们团队的URL,而不依赖新来者设置dnsmasq,但chrome仍然拒绝让我的任何开发人员使用它,因为…原因?
背着阿迪亚特·穆巴拉克
无法硬刷新,因为它只是在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) |
- 对。就是这样!简单明了。谢谢。
- 我是第二次来这里寻求解决方案。多谢。
- 我使用的是一个.local域,当上面的HSTS解决方案没有使用的时候,这个方法是有效的。
- 在尝试了Bigjump和Adiyat穆巴拉克的解决方案之后,这是唯一对我有用的东西。
- 这对我很有用-谢谢!
- 禁用缓存对我来说也是必要的。这个问题在我关掉小提琴后就开始出现了。
Chrome63(从2017年12月开始发布)将强制所有以.dev(和.foo)结尾的域通过预加载的HTTP Strict Transport Security(HSTS)头重定向到HTTPS。你可以在这里找到更多关于这个的信息。
- 这是这个问题的正确答案。
- 同上。上周它也影响了我们的.app域。我们暂时转向.test,尽管我认为这不是一个长期的解决方案。
来自https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/
没有一个选项修复对我有效,对于修复https://localhost:3000,这是有效的。
点击并按住Reload按钮,选择Empty Cache and Hard Reload,这似乎只是localhost上的一个选项。
- 这对我很管用
- 这在我这边不起作用。还有其他解决办法吗?
- 更新了最新的Chrome,使该解决方案不再有效。
这可能是由缓存的HTTPS重定向引起的,可以通过手动清除缓存来修复,如Adiyat Mubarak的答案所示。
但是,如果您访问的是localhost,那么您可能是开发人员,在这种情况下,您会发现一个缓存清除chrome扩展,例如"经典缓存杀手"(参见https://chrome.google.com/webstore/search/classic%20cache%20killer)?hl=en)适用于各种情况,可能已经安装了一个。
所以快速解决方法是:安装一个缓存杀手(如果你还没有缓存杀手),打开它,然后重新加载页面。完成!
- 它对我来说就像是一种魅力!谢谢!
- 这应该得到所有的赞成票。
- 这解决了问题
我从来没有找出问题的根源,但我能解决这个问题。我删除了谷歌Chrome应用缓存文件夹,解决了这个问题。
C:users[用户]appdatalocalgooglechrome
- 您是否丢失了所有浏览器历史记录或密码?
- 我相信问题是,当你使用https访问一个域时,chrome会存储,如果你再次访问同一个域,它会自动切换到https。作为一名开发人员,这是一件痛苦的事情,因为一旦您使用HTTPS访问任何本地主机站点,所有本地主机站点都会突然重定向到HTTPS。
- @你说得不对。这是由hsts:en.wikipedia.org/wiki/http_strict_transport_security引起的。
我也一直在努力解决这个问题。似乎HST只针对域名。因此,如果您是在本地计算机上开发的,那么使用IP地址就容易得多。所以我从本地主机切换到127.0.0.1
- 这很好,但是否可以确保每次键入localhost时,都用127.0.0.1替换localhost这个词?
- 非常感谢
这些都不适合我。它是在chrome更新(版本63.0.3239.84,Linux)和本地URL之后开始的。不管怎样都会重定向到HTTPS。在这个问题上损失了几个小时和很多耐心
毕竟,真正起作用的只是改变域名。
值得一提的是,域名是.app。也许有什么事要做?把它改为.test,chrome停止了重定向。
chrome 63通过预加载的hsts强制.dev域自动转换为https。< BR>快速修复:只需将.dev域更改为.localhost。
对于像我这样懒惰的人来说,这是一个懒惰而快速的解决方案(在Chrome67中工作)。
只需在隐身模式下启动另一个Chrome窗口,使用"匿名窗口"选项(ctrl+shift+n)。不需要删除缓存,不需要深入到深度铬设置等。
- 我有其他建议的问题-可能是因为我需要在同一时间打开几个不同的网页,所有网页都在同一个域上,但在不同的服务器上,其中一些使用HTTPS的Web服务器,另一些使用纯HTTP。除了那扇"不认识的窗户",别的都不行!
- 这是可行的,但是由于临时头的存在,这使得我的Ajax请求非常慢。
这不是解决方案,只是权宜之计。
在解决方案资源管理器中单击您的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"的图标。右键单击它,它会说一些"不安全的脚本",然后有一个加载它们的选项。那样做。
- 你知道这个选项的名字是什么,或者在哪里可以找到它?我在我的URL栏中看不到快捷方式。
- @我不知道它叫什么。它可能只出现在我的特定问题上。
另一种选择是使用类似https://github.com/rchampourlier/tunnels的内容
当然,它添加了另一个依赖项/设置,但它也支持在dev中测试https,这可能很好。
但是我使用RVM来进行隧道施工,我必须使用sudo gem install tunnelss和sudo tunnelss。
这是当今最快的解决方案(2018年3月17日):
关闭所有Chrome选项卡/Windows并在命令行上运行此命令:(或将其作为短代码添加)
1
| "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors |