307 Chrome에서 analytics.js를로드 할 때 리디렉션
웹 앱을 만들고 분석을 위해 Google Analytics (analytics.js)를 사용하고 있습니다. 최근에 Chrome에서 분석이 제대로 작동하지 않는 것을 발견했습니다.
별도의 모듈에서 표준 코드 스 니펫을 사용하여 분석을로드하고 requirejs를 통해 포함되었습니다. 이 스크립트가 예상대로 실행되고 분석 스 니펫을 실행하는지 확인했습니다.
Firefox에서 네트워크 트래픽을 검사 할 때 분석 스크립트가 예상대로 Google에서로드 된 것을 볼 수 있습니다 (HTTP 200 응답).

그러나 Chrome에서 똑같은 페이지를 실행하면 about : blank를 가리키는 HTTP 307 응답이 표시되고 분석이 실행되지 않습니다.

그러나 분석 URL을 Chrome 주소 표시 줄에 직접 붙여 넣으면 스크립트가 발견됩니다. 여기에서 무슨 일이 일어나고 있는지 또는 어떻게 고치는 지 아이디어가 있습니까?
307 Internal Redirectwith Non-Authorative-Reason: Delegate는 요청이 webRequest 또는 선언적 webRequest 확장 API 를 통해 Chrome 확장 프로그램에서 가로 채고 수정 (리디렉션)되었음을 나타냅니다 .
다음과 같이 리디렉션을 트리거 한 확장 프로그램을 확인할 수 있습니다.
- 방문
chrome://net-internals/#events - 요청을 트리거합니다 (귀하의 경우 Google 애널리틱스).
chrome://net-internals/#events탭으로 돌아가서 요청과 일치하는 URL_REQUEST를 찾으십시오 (검색 상자를 사용하여 검색을 필터링 할 수 있음).- 항목을 클릭하면 오른쪽에 로그가 표시됩니다. 확장 이름, 확장 ID 및 요청에 대한 기타 정보가 표시됩니다.
t = 7910 [st = 0] + REQUEST_ALIVE [dt = 6]
t = 7910 [st = 0] + URL_REQUEST_DELEGATE [dt = 5]
t = 7910 [st = 0] DELEGATE_INFO [dt = 5]
-> delegate_info = "확장자 [확장자 이름]"
t = 7915 [st = 5] CHROME_EXTENSION_REDIRECTED_REQUEST
-> extension_id = "ebmlimjkpnhckbaejoagnjlgcdhdnjlb"
t = 7915 [st = 5] -URL_REQUEST_DELEGATE
t = 7915 [st = 5] + URL_REQUEST_START_JOB [dt = 1]
-> load_flags = 339804160 (BYPASS_DATA_REDUCTION_PROXY | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
-> 방법 = "GET"
-> 우선 순위 = "낮음"
-> url = "https://www.google-analytics.com/analytics.js"
t = 7915 [st = 5] URL_REQUEST_REDIRECT_JOB
-> 이유 = "대리자"
t = 7915 [st = 5] URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED
-> HTTP / 1.1 307 내부 리디렉션
위치 : about : blank
권한이없는 이유 : 위임
이 로그 샘플에서 이름이 "[Name of extension]"이고 확장 ID가 "ebmlimjkpnhckbaejoagnjlgcdhdnjlb"인 확장이 요청을 리디렉션했습니다. 확장 이름 및 / 또는 ID를 찾은 후 chrome://extensions요청을 수정 한 확장을 방문 하여 비활성화하거나 제거 할 수 있습니다 .
제 경우에는 307 리디렉션의 이유가 더 산발적이었습니다. 프로토콜 기준 URL 을 사용하는 습관 때문에 Google 유니버설 애널리틱스의 삽입 스크립트에있는 URL에서 프로토콜을 제거하여로 변경 https://www.google-analytics.com/analytics.js했습니다 //www.google-analytics.com/analytics.js.
예를 들어 ( 집에서 시도하지 마십시오 ) :
(함수 (i, s, o, g, r, a, m) {i [ 'GoogleAnalyticsObject'] = r; i [r] = i [r] || function () {(i [r] .q = i [r] .q || []). push (arguments)}, i [r] .l = 1 * new Date (); a = s.createElement (o), m = s.getElementsByTagName (o) [ 0]; a.async = 1; a.src = g; m.parentNode.insertBefore (a, m)}) (window, document, 'script', '
https ://www.google-analytics.com/analytics .js ','ga ');
Google은 분명히 https를 통해서만 스크립트 및 추적 요청을 제공하므로 권장되지 않습니다. 따라서 프로토콜을 제거하면 스크립트를 처음 삽입 할 때와 후속 추적 요청 (!) 모두에서 리디렉션이 발생합니다. 또한 Paul Irish가 프로토콜 기준 URL에 대한 표준 게시물 업데이트에서 언급 했듯이이 기술은 더 이상 권장되지 않거나 실제로 장점이 있습니다.
이제 SSL이 모든 사람에게 권장되고 성능 문제가 없으므로이 기술은 이제 안티 패턴입니다. 필요한 자산을 SSL에서 사용할 수있는 경우 항상 https : // 자산을 사용하십시오.
제 경우에는 브라우저에서 UBlock Origin이 활성화되어 있습니다. 연결이 끊어 지거나 사이트가 승인되면 내부 리디렉션이 중지되었습니다.
참고 URL : https://stackoverflow.com/questions/27945501/307-redirect-when-loading-analytics-js-in-chrome
'IT TIP' 카테고리의 다른 글
| 안드로이드 보류중인 의도 알림 문제 (0) | 2020.10.25 |
|---|---|
| 프로그래밍 방식으로 ProgressBar를 만드는 방법은 무엇입니까? (0) | 2020.10.25 |
| ASP.Net MVC에서 User 개체의 UserID를 어떻게 얻습니까? (0) | 2020.10.25 |
| 내 PHP 파일이 일반 텍스트로 표시되는 이유는 무엇입니까? (0) | 2020.10.25 |
| 콘솔 응용 프로그램을 닫는 명령? (0) | 2020.10.25 |