2012-01-08 26 views
6

मैं जो निम्नलिखित कोड है http://hacks.mozilla.org/2011/03/the-shortest-image-uploader-ever/ के लिए एक लिंक है this सवाल पर और उस में देख रहा हूँ:यह क्रॉस डोमेन AJAX अनुरोध कैसे काम करता है?

var fd = new FormData(); 
fd.append("image", file); // Append the file 
fd.append("key", "6528448c258cff474ca9701c5bab6927"); 
// Get your own key: http://api.imgur.com/ 

// Create the XHR (Cross-Domain XHR FTW!!!) 
var xhr = new XMLHttpRequest(); 
xhr.open("POST", "http://api.imgur.com/2/upload.json"); // Boooom! 
xhr.onload = function() { 
    // Big win! 
    // The URL of the image is: 
    JSON.parse(xhr.responseText).upload.links.imgur_page; 
} 
// Ok, I don't handle the errors. An exercice for the reader. 
// And now, we send the formdata 
xhr.send(fd); 

कैसे इस क्रॉस-डोमेन अनुरोध काम करता है? मैंने एक नियम के रूप में सोचा कि सुरक्षा प्रतिबंध हैं जो लोगों को ऐसा करने से रोकते हैं।

उत्तर

3

सर्वर पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति क्रॉस डोमेन के लिए सेट के साथ reponding है अनुरोध करता

Response Headers 
Access-Control-Allow-Origin: * 
Cache-Control max-age=604800 
Connection keep-alive 
Content-Length 494 
Content-Type application/json 

http://www.w3.org/TR/cors/#access-control-allow-origin-response-hea

http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors

+0

क्या यह अभी भी मामला है? – Poutrathor

1

Imgur लागू करता पार उत्पत्ति रिसोर्स शेयरिंग (CORS) ।

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

अधिक जानकारी के लिए http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ देखें।