sam*_*ris 2 google-chrome redirection hosts-file
我正在本地构建Express.js应用程序。为了在 localhost 以外的其他地方进行测试,我将以下条目添加到我的主机文件中:
127.0.0.1 mynewapp.dev
Run Code Online (Sandbox Code Playgroud)
甚至没有启动应用程序,我不小心http://mynewapp.dev:3000
在 Chrome 中尝试了(这是我打算运行应用程序的地方)。令我惊讶的是,Chrome 将我重定向到https://mynewapp.dev:3000
.
浏览器控制台中的标题显示:
一般的:
- 请求网址:
http://mynewapp.dev:3000/
- 请求方式:GET
- 状态代码:307 内部重定向
- 推荐人政策:降级时不推荐人
响应头:
- 地点:
https://mynewapp.dev:3000/
- 非权威原因:HSTS
请求头:
- 显示临时标题
- 升级不安全请求:1
- 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如
- 壁虎)Chrome/68.0.3440.106 Safari/537.36
- X-DevTools-Emulate-Network-Conditions-Client-Id: 23A0CBD658A51DF4CA3B25A263078DA4
这怎么发生的?我没有重定向请求的软件,我的应用程序甚至没有运行!
我在用:
但是,这不会发生在:
回答评论:
curl -I http://mynewapp.dev:3000
卡住了,什么也不显示。我也尝试过chrome://net-internals/#events
,并找到了请求。这是我看到的:
100382: URL_REQUEST
http://mynewapp.dev:3000/
Start Time: 2018-08-17 07:32:03.853
t=16751 [st= 0] +REQUEST_ALIVE [dt=1007]
--> priority = "HIGHEST"
--> url = "http://mynewapp.dev:3000/"
t=16751 [st= 0] +URL_REQUEST_DELEGATE [dt=1]
t=16751 [st= 0] DELEGATE_INFO [dt=1]
--> delegate_blocked_by = "extension AdBlock"
t=16752 [st= 1] -URL_REQUEST_DELEGATE
t=16752 [st= 1] +URL_REQUEST_START_JOB [dt=6]
--> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
--> method = "GET"
--> url = "http://mynewapp.dev:3000/"
t=16752 [st= 1] URL_REQUEST_REDIRECT_JOB
--> reason = "HSTS"
t=16752 [st= 1] URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED
--> HTTP/1.1 307 Internal Redirect
Location: https://mynewapp.dev:3000/
Non-Authoritative-Reason: HSTS
t=16752 [st= 1] +URL_REQUEST_DELEGATE [dt=6]
t=16752 [st= 1] DELEGATE_INFO [dt=6]
--> delegate_blocked_by = "MojoAsyncResourceHandler"
t=16758 [st= 7] -URL_REQUEST_DELEGATE
t=16758 [st= 7] URL_REQUEST_REDIRECTED
--> location = "https://mynewapp.dev:3000/"
t=16758 [st= 7] -URL_REQUEST_START_JOB
t=16758 [st= 7] +URL_REQUEST_DELEGATE [dt=0]
t=16758 [st= 7] DELEGATE_INFO [dt=0]
--> delegate_blocked_by = "extension AdBlock"
t=16758 [st= 7] -URL_REQUEST_DELEGATE
t=16758 [st= 7] +URL_REQUEST_START_JOB [dt=1000]
--> load_flags = 18432 (MAIN_FRAME_DEPRECATED | MAYBE_USER_GESTURE)
--> method = "GET"
--> url = "https://mynewapp.dev:3000/"
t=16759 [st= 8] URL_REQUEST_DELEGATE [dt=0]
t=16759 [st= 8] HTTP_CACHE_GET_BACKEND [dt=0]
t=16759 [st= 8] HTTP_CACHE_OPEN_ENTRY [dt=0]
--> net_error = -2 (ERR_FAILED)
t=16759 [st= 8] HTTP_CACHE_CREATE_ENTRY [dt=0]
t=16759 [st= 8] HTTP_CACHE_ADD_TO_ENTRY [dt=0]
t=16759 [st= 8] +HTTP_STREAM_REQUEST [dt=999]
t=16759 [st= 8] HTTP_STREAM_JOB_CONTROLLER_BOUND
--> source_dependency = 100392 (HTTP_STREAM_JOB_CONTROLLER)
t=17758 [st=1007] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 100393 (HTTP_STREAM_JOB)
t=17758 [st=1007] -HTTP_STREAM_REQUEST
t=17758 [st=1007] -URL_REQUEST_START_JOB
--> net_error = -102 (ERR_CONNECTION_REFUSED)
t=17758 [st=1007] URL_REQUEST_DELEGATE [dt=0]
t=17758 [st=1007] -REQUEST_ALIVE
--> net_error = -102 (ERR_CONNECTION_REFUSED)
Run Code Online (Sandbox Code Playgroud)chrome://net-internals/#dns
。不工作。.dev
顶级域使用HSTS 。正如这篇博文中所解释的,虽然桌面开发人员几乎永远都在使用本地重定向(通过hosts
).dev
,但显然现在(截至 2018 年 5 月)谷歌拥有一个合法的.dev
通用顶级域 (gTLD)。还有就是这个由铬2018年1月4日,明确规定承诺:
Preload HSTS for the .dev gTLD.
Run Code Online (Sandbox Code Playgroud)
多么有趣!此外,截至 2018 年 7 月,Firefox 也这样做了。
对于不想为本地开发设置 HTTPS 的任何人来说,最简单和最实用的解决方案是使用其他后缀,例如.localhost
或什至.local
或诚实地使用世界上的任何东西,例如*.foobar
等等。
但长短是在2018年,使用*.dev
suffix进行本地开发只会比其他任何事情都造成更多不经意的头痛和混乱。
归档时间: |
|
查看次数: |
1302 次 |
最近记录: |