IT TIP

307 Chrome에서 analytics.js를로드 할 때 리디렉션

itqueen 2020. 10. 25. 13:25
반응형

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 확장 프로그램에서 가로 채고 수정 (리디렉션)되었음을 나타냅니다 .

다음과 같이 리디렉션을 트리거 한 확장 프로그램을 확인할 수 있습니다.

  1. 방문 chrome://net-internals/#events
  2. 요청을 트리거합니다 (귀하의 경우 Google 애널리틱스).
  3. chrome://net-internals/#events탭으로 돌아가서 요청과 일치하는 URL_REQUEST를 찾으십시오 (검색 상자를 사용하여 검색을 필터링 할 수 있음).
  4. 항목을 클릭하면 오른쪽에 로그가 표시됩니다. 확장 이름, 확장 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

반응형