2009-12-20 12 views
10

क्या किसी के पास Google क्रोम में उपयोगकर्ता स्क्रिप्ट से क्रॉस मूल XHR निष्पादित करने का कोई भाग्य है? अनुरोध सर्वर पर जाते हैं (मैं उन्हें लॉग में देख सकता हूं) लेकिन, readystatechanged ईवेंट कभी नहीं निकाल दिया जाता है।Google क्रोम में उपयोगकर्ता स्क्रिप्ट से क्रॉस-मूल XHR

एक्सटेंशन अनुमतियां चाल चल रही प्रतीत नहीं होती हैं। जेएसओएनपी भी नहीं है।

+0

http://code.google.com/chrome/extensions/xhr.html के अनुसार यदि आप किसी एक्सटेंशन में उपयोगकर्तास्क्रिप्ट को लपेटते हैं, तो एक्सटेंशन मेनिफेस्ट उपयोगकर्ता को XSS बनाने की अनुमति दे सकता है एक्सएचआर। – bzlm

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, मैंने इसके बारे में पढ़ा है। इस दृष्टिकोण के साथ समस्या यह है कि मैं इसे userscripts.org पर होस्ट नहीं कर सकता हूं और उम्मीद करता हूं कि यह सीधे अन्य स्क्रिप्ट की तरह काम करे। – Pranav

उत्तर

9

क्रोम के वर्तमान संस्करण (13.0.781 या बाद में) अब सबसे या GM_xmlhttpRequest()Doc सभी कार्यक्षमता का समर्थन - क्रॉस-डोमेन सहित अनुरोध करता है।
Issue 18857: Support cross-site XMLHttpRequest in content scripts देखें।

तो इस स्क्रिप्ट क्रोम पर अब पूरी तरह से ठीक काम करता है (और Firefox, निश्चित रूप से):

// ==UserScript== 
// @name   _Cross domain (XSS) GM_xmlhttpRequest, Chrome too 
// @include   http://stackoverflow.com/* 
// ==/UserScript== 

GM_xmlhttpRequest ({ 
    method:  "GET", 
    url:  "http://www.google.com/", 
    onload:  function (response) { 
        console.log ( response.status, 
            response.responseText.substring (0, 80) 
           ); 
       } 
}); 


(कि स्क्रिप्ट स्थापित करें, तो कोई भी इतना पेज ब्राउज़ स्क्रिप्ट का पहला 80 अक्षर लिखेंगे। कंसोल पर Google होम पेज।)

+0

धन्यवाद। मैंने उम्र में अपनी उपयोगकर्तास्क्रिप्ट को नहीं देखा है, यह निश्चित रूप से यह सुनिश्चित करने का एक कारण देता है कि यह क्रोम संगत है। – Pranav

+0

ध्यान दें कि यह केवल '@ आवश्यकता' (ऊपर की तरह) के लिए काम करता है, [' @ match' के लिए नहीं] (https://code.google.com/p/chromium/issues/detail?id=112746)। उत्तरार्द्ध 'XMLHttpRequest लोड नहीं कर सकता है [...] उत्पत्ति क्रोम-एक्सटेंशन: // [...] को एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनल द्वारा अनुमति नहीं है। – Arjan

5

क्रोम 13 के रूप में, यदि आप मैनिफेस्ट में वेबसाइट पर अनुमति शामिल करते हैं तो आप सामग्री स्क्रिप्ट में क्रॉस मूल अनुरोध कर सकते हैं।

क्रोम में एक उपयोगकर्ता स्क्रिप्ट एक सामग्री स्क्रिप्ट है। सामग्री स्क्रिप्ट क्रॉस-मूल XHR नहीं बना सकती हैं। यदि आप क्रॉस-मूल XHR करना चाहते हैं, तो इसे एक्सटेंशन पृष्ठों (पृष्ठभूमि, पॉपअप, विकल्प) में किया जाना चाहिए।

अधिक जानकारी के लिए: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html

+1

यह उत्तर अब क्रोम 13.0.781 के रूप में अप्रचलित है। –

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