2015-01-14 5 views
51

मैं एक वेब ऐप बना रहा हूं और विश्लेषिकी के लिए Google Analytics (analytics.js) का उपयोग कर रहा हूं। मैंने हाल ही में देखा है कि क्रोमियम में विश्लेषिकी ठीक से काम नहीं कर रही हैं।307 क्रोम में analytics.js लोड करते समय रीडायरेक्ट

मैं एक अलग मॉड्यूल में मानक कोड स्निपेट का उपयोग करके विश्लेषण लोड कर रहा हूं और requjs के माध्यम से शामिल किया गया है। मैंने सत्यापित किया है कि यह स्क्रिप्ट अपेक्षित रूप से चलती है और विश्लेषण स्निपेट निष्पादित करती है।

जब मैं Firefox में नेटवर्क यातायात का निरीक्षण किया, मैं देख सकता है कि विश्लेषिकी स्क्रिप्ट गूगल से भरी हुई है के रूप में उम्मीद (HTTP 200 प्रत्युत्तर):

enter image description here

हालांकि, जब मैं ठीक उसी पेज में चला क्रोम, मैं एक HTTP 307 प्रतिक्रिया के बारे में इशारा करते हुए मिलता है: खाली, और विश्लेषण पर नहीं चलता है:

enter image description here

हालांकि, अगर मैं Chrome पते में सीधे एनालिटिक्स URL पेस्ट बार, लिपि पाई जाती है। कोई विचार क्या हो रहा है, या इसे कैसे ठीक किया जा सकता है?

उत्तर

132

Non-Authorative-Reason: Delegate साथ 307 Internal Redirect इंगित करता है कि अनुरोध को रोका और संशोधित (पुनः निर्देशित) webRequest या declarative webRequest एक्सटेंशन API के माध्यम से एक Chrome एक्सटेंशन के द्वारा किया गया था।

आप पता लगा सकते जो विस्तार रीडायरेक्ट शुरू हो रहा इस प्रकार है:

  1. जाएँ chrome://net-internals/#events
  2. उत्प्रेरक अनुरोध (एनालिटिक्स गूगल, आपके मामले में)।
  3. chrome://net-internals/#events टैब पर वापस जाएं और अपने अनुरोध से मेल खाने वाले URL_REQUEST की तलाश करें (आप खोज फ़िल्टर करने के लिए खोज बॉक्स का उपयोग कर सकते हैं)।
  4. दाएं तरफ लॉग दिखाने के लिए प्रविष्टि पर क्लिक करें। आप अनुरोध के बारे में विस्तार नाम, एक्सटेंशन आईडी और अन्य जानकारी देखेंगे:
 
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 = "extension [Name of extension]" 
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) 
       --> method = "GET" 
       --> priority = "LOW" 
    --> url = "https://www.google-analytics.com/analytics.js" 
t=7915 [st=5]  URL_REQUEST_REDIRECT_JOB 
        --> reason = "Delegate" 
t=7915 [st=5]  URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED 
        --> HTTP/1.1 307 Internal Redirect 
         Location: about:blank 
         Non-Authoritative-Reason: Delegate 

इस लॉग नमूने में, नाम के साथ एक विस्तार "[एक्सटेंशन का नाम]" और एक्सटेंशन आईडी "ebmlimjkpnhckbaejoagnjlgcdhdnjlb" अनुरोध को रीडायरेक्ट । एक्सटेंशन का नाम और/या आईडी ढूंढने के बाद, आप chrome://extensions पर जा सकते हैं और अनुरोध को संशोधित करने वाले एक्सटेंशन को अक्षम या हटा सकते हैं।

+9

प्रतिभाशाली। मुझे नहीं पता था कि यह विश्लेषण संभव था। एक एक्सटेंशन के रूप में बाहर निकला (.... ड्रम रोल, कृपया ...) ब्लॉक विश्लेषण। जो वास्तव में कर रहा था वह कर रहा था ... – Benj

+2

आप सर, मेरा दिन बना दिया! ;) – 23tux

+0

यह अविश्वसनीय है। धन्यवाद लूट! मैं देखता हूं कि एडब्लॉक मेरे लिए आपके पोस्ट स्निपेट के समान स्थान पर है। अगर मुझे गुप्त मोड में कोई स्पष्ट संकेत नहीं दिखता तो इसका क्या अर्थ है? हम 'अनुरोध ALIVE',' URL_REQUEST_DELEGATE' से जाना (कोई +/विवरण, डीटी = 0), सीधे शुरू काम करने के लिए/अनुप्रेषित काम। किसी भी तरह से, इस भारी अंतर्दृष्टि के लिए धन्यवाद! –

4

मेरे मामले में, 307 रीडायरेक्ट का कारण अधिक संभावनापूर्ण था। protocol-relative URLs का उपयोग करने की आदत से, मैंने Google यूनिवर्सल Analytics की एम्बेडिंग स्क्रिप्ट में यूआरएल से प्रोटोकॉल हटा दिया है, https://www.google-analytics.com/analytics.js से //www.google-analytics.com/analytics.js बदल रहा है।

(समारोह (i, रों, ओ, जी, आर, एक, मीटर) {मैं [ 'GoogleAnalyticsObject'] = r:

उदाहरण के लिए (घर पर इस कोशिश मत करो) ; मैं [आर] = मैं [आर] || समारोह() { (मैं [आर] .q = मैं [आर] .q || [])। पुश (तर्क)}, मैं [आर]। एल = 1 * नई तिथि(); ए = एस .createElement (ओ), एम = s.getElementsByTagName (ओ) [0]; a.async = 1; a.src = g; m.parentNode.insertBefore (ए, एम) }) (विंडो, दस्तावेज़, 'स्क्रिप्ट', ' https: //www.google-analytics.com/analytics।जे एस ',' गा ');

यह अनावश्यक है क्योंकि Google जाहिर तौर पर केवल https पर स्क्रिप्ट और ट्रैकिंग अनुरोधों की सेवा करता है। तो प्रोटोकॉल को हटाने से पहली बार स्क्रिप्ट को एम्बेड करने के साथ-साथ किसी भी (!) बाद के ट्रैकिंग अनुरोध में रीडायरेक्ट होता है। इसके अलावा, के रूप में अपने canonical post about protocol-relative URLs के लिए एक अद्यतन में पॉल आयरिश ने कहा, इस तकनीक नहीं रह गया है प्रोत्साहित किया जाता है या वास्तव में योग्यता है:

अब जब कि एसएसएल हर किसी के लिए प्रोत्साहित किया जाता है और प्रदर्शन चिंताओं नहीं है, इस तकनीक है अब एक विरोधी पैटर्न। यदि आपको आवश्यक संपत्ति एसएसएल पर उपलब्ध है, तो हमेशा https: // संपत्ति का उपयोग करें।

संबंधित मुद्दे