即使本地开发服务器未处于活动状态,出于开发目的添加到主机文件的假“.dev”域也会重定向到 Windows 上 Chrome 中的 HTTPS

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

这怎么发生的?我没有重定向请求的软件,我的应用程序甚至没有运行!

我在用:

  • Chrome 版本 68.0.3440.106(官方版本)(64 位)
  • Windows 10 企业版

但是,这不会发生在:

  • Microsoft Edge 40.15063.674.0(显示错误代码:INET_E_RESOURCE_NOT_FOUND)
  • IE 11(显示错误代码:INET_E_RESOURCE_NOT_FOUND)

回答评论:

  • 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。不工作。
  • 停止了所有 Chrome 扩展程序。行为没有变化。

Gia*_*968 5

从 2018 年开始,Chrome 和 Firefox 现在强制.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年,使用*.devsuffix进行本地开发只会比其他任何事情都造成更多不经意的头痛和混乱。


归档时间:

查看次数:

1302 次

最近记录:

7 年,1 月 前