2012-01-08 56 views
6

我看this問題和它給http://hacks.mozilla.org/2011/03/the-shortest-image-uploader-ever/一個鏈接,具有下面的代碼:這個Cross Domain 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); 

這是如何跨域請求工作?我認爲通常有一些安全限制可以阻止人們這樣做。

回答

1

Imgur實現跨來源資源共享(CORS) 。

CORS標準通過添加新的HTTP標頭起作用,允許服務器 爲允許的源域服務資源。瀏覽器支持這些 標題並強制執行它們建立的限制。此外,對於 可能導致對用戶數據產生副作用的HTTP請求方法(特別是對於 ,對於GET以外的HTTP方法或對於某些MIME類型的 POST使用),規範要求瀏覽器 「預檢」請求通過HTTP OPTIONS請求頭從服務器 請求支持的方法,然後在從服務器「批准」 服務器時,使用實際HTTP請求 方法發送實際請求。服務器還可以通知客戶端 (包括Cookie和HTTP驗證數據)是否應該以 請求發送「憑證」。

查看http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/瞭解更多信息。