
나는 건물을 짓고 있다Express.js앱을 로컬로. 이것을 localhost가 아닌 다른 곳에서 테스트하기 위해 호스트 파일에 다음 항목을 추가했습니다.
127.0.0.1 mynewapp.dev
앱을 시작하지도 않고 실수로 http://mynewapp.dev:3000
Chrome에서 앱을 실행하려고 했습니다. 놀랍게도 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, like
- 게코) 크롬/68.0.3440.106 사파리/537.36
- X-DevTools-에뮬레이트-네트워크-조건-클라이언트-Id: 23A0CBD658A51DF4CA3B25A263078DA4
어떻게 이런일이 일어 났습니까?요청을 리디렉션하는 소프트웨어가 없으며 내 앱이 실행되지도 않습니다!
나는 다음을 사용하고 있습니다 :
- Chrome 버전 68.0.3440.106(공식 빌드)(64비트)
- 윈도우 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
로컬 개발에 접미사를 사용하는 것이 무엇보다 의도치 않은 두통과 혼란을 야기할 뿐입니다.