開発目的でホスト ファイルに追加された偽の「.dev」ドメインは、ローカル開発サーバーがアクティブでない場合でも、Windows 上の Chrome で HTTPS にリダイレクトされます。

開発目的でホスト ファイルに追加された偽の「.dev」ドメインは、ローカル開発サーバーがアクティブでない場合でも、Windows 上の Chrome で HTTPS にリダイレクトされます。

私はエクスプレスアプリをローカルで実行します。これをローカルホスト以外でテストするために、ホスト ファイルに次のエントリを追加しました。

127.0.0.1       mynewapp.dev

アプリを起動していないのに、誤ってhttp://mynewapp.dev:3000Chrome で を試しました (ここでアプリを実行するつもりでした)。驚いたことに、Chrome は にリダイレクトしましたhttps://mynewapp.dev:3000

ブラウザのコンソールのヘッダーには次のように表示されます:

一般的な:

  • リクエストURL: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-エミュレート-ネットワーク条件-クライアント 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)
    
  • からホスト キャッシュをクリアしましたchrome://net-internals/#dns。 機能しませんでした。
  • すべての Chrome 拡張機能を停止しました。動作に変化はありません。

答え1

2018 年以降、Chrome と Firefox では.devトップレベル ドメインに対して HSTS が強制されるようになりました。

としてこのブログ記事で説明されているhostsデスクトップ開発者は、ほぼずっと前からローカルにリダイレクトされた(経由)を使用してきましたが.dev、どうやら現在は(2018年5月現在)正当な.devジェネリックトップレベルドメイン(gTLD)Googleが所有しています。2018年1月4日のChromiumコミットでは、:

Preload HSTS for the .dev gTLD.

楽しいですね!さらに、2018年7月現在、Firefoxも同様の機能を備えている。

ローカル開発用に HTTPS を設定したくない人にとって、最もシンプルで実用的な解決策は、 などの別のサフィックスを使用することです。あるいは.localhost、 や など.local、世界中のあらゆるサフィックスを使用することです*.foobar

しかし、結局のところ、2018 年に*.devローカル開発にサフィックスを使用すると、他の何よりも不注意による頭痛や混乱が生じるだけです。

関連情報