2012-07-14 22 views
12

मेरे पास एक साधारण Google Apps स्क्रिप्ट ContentService है जो "हैलो वर्ल्ड शनि जुलाई 14 2012 14:17:21 GMT + 1000 (EST)" जैसे स्ट्रिंग को उत्सर्जित करती है "यूआरएल https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec है और यह अनाम के लिए खुला है। इसे हिट करने के लिए स्वतंत्र महसूस करें। कोड है:मैं Google Apps स्क्रिप्ट ContentService के काम के विरुद्ध XHR/AJAX अनुरोध कैसे कर सकता हूं?

function doGet() { 
    var output = ContentService.createTextOutput() 
     .setMimeType(ContentService.MimeType.TEXT) 
     .setContent("Hello world " + new Date()); 
    Logger.log(output.getContent()); 
    return output; 
} 

जब मैं ब्राउज़र में यूआरएल पर जाता हूं तो यह अपेक्षित (pass.png) स्ट्रिंग देता है। जब मैं एक एक्सएचआर (AJAX कॉल) में एक ही यूआरएल का उपयोग करता हूं तो यह एक खाली त्रुटि के साथ विफल रहता है। क्रोम में डेवलपर टूल्स में रीडायरेक्ट "(रद्द)" (fail.png) है। यहाँ पुन: पेश करने असफल कोड है:

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function loadXMLDoc() { 
    xhr=new XMLHttpRequest(); 
    xhr.onreadystatechange=function() { 
    if (xhr.readyState==4 && xhr.status==200) { 
    document.getElementById("myDiv").innerHTML=xhr.responseText; 
    } 
    }; 
    xhr.open("GET","https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec",true); 
    xhr.send(); 
} 
</script> 
</head> 
<body> 

<h2>Using the XMLHttpRequest object</h2> 
<div id="myDiv"></div> 
<button type="button" onclick="loadXMLDoc()">Get Content via XHR</button> 
</body> 
</html> 

प्रत्यक्ष अनुरोध: DIrect requestpass.png एक्सएचआर अनुरोध: enter image description here मेरा प्रश्न (उम्मीद काफी विशेष): मैं कैसे करूँ उदाहरण पर एक सादे पुराने वेब पेज से एक्सएचआर कॉल कर अज्ञात Google Apps स्क्रिप्ट ContentService स्क्रिप्ट से सामग्री प्राप्त करने के लिए .com?

+0

.... एक ही सवाल .... दिलचस्प। –

+0

[Google Apps स्क्रिप्ट क्रॉस-डोमेन अनुरोधों को काम करना बंद कर दिया] [http://stackoverflow.com/questions/29525860/google-apps-script-cross-domain-requests-stopped-working) के संभावित डुप्लिकेट –

उत्तर

9

मुझे यकीन नहीं है कि यह वर्तमान में संभव है। हमने जेएसओएनपी विधि (जो काम करता है; मैंने इसका परीक्षण किया है) पर विचार किया है, लेकिन मुझे नहीं लगता कि सामग्री सेवा के खिलाफ एक्सएचआर बनाना कभी परीक्षण किया गया था। इसके लिए हमें शायद सीओआरएस हेडर स्थापित करने की आवश्यकता होगी। कृपया समस्या ट्रैकर पर एक सुविधा अनुरोध दर्ज करें और हम देखेंगे कि यह किया जा सकता है या नहीं।

+0

यहां http: // /code.google.com/p/google-apps-script-issues/issues/detail?id=1563 और मैं JSONP स्क्रिप्ट विधि भी आज़माउंगा और यहां वापस रिपोर्ट करूंगा। –

+2

JSONP स्क्रिप्ट इंजेक्शन ठीक काम किया। धन्यवाद। तो, मेरा पोस्ट मॉर्टम जेएस 101 है: ब्राउजर ने अंतिम जीईटी करने से इनकार कर दिया है क्योंकि जीएएस सर्वर को (कम से कम) एक सीओआरएस हेडर जोड़ने की आवश्यकता होगी "एक्सेस-कंट्रोल-ऑब्जेक्ट-ऑरिजन: somedomain | *" https://developer.mozilla.org/en/http_access_control। जीएएस सर्वर ऐसा कोई हेडर नहीं निकलता है। शीर्षलेख की अनुपस्थिति में, ब्राउज़र साइड स्क्रिप्ट एक ही मूल नीति (https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript) के अधीन है और इसलिए जीईटी की स्थिति "(रद्द)" है। –

+2

हाय @ पीटर हेरमैन एक साल से अधिक समय बाद मैं एक ही समस्या में फंस गया हूं - क्या आपने इसके लिए समाधान ढूंढ लिया है? धन्यवाद, Fausto। –