2012-01-08 8 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); 

このクロスドメインリクエストはどのように機能するの?私は原則として、人々がこれをやることを止めるセキュリティ制限があると考えました。サーバがクロスドメインを許可するように設定するアクセス制御 - 許可 - 起源とrepondingさ

答えて

1

要求する(CORS) 。

CORS標準は、サーバー が許可されたオリジンドメインにリソースを提供できるようにする新しいHTTPヘッダーを追加することによって機能します。ブラウザはこれらの ヘッダーをサポートし、それらが確立する制限を実施します。さらに、 の場合、ユーザーデータ(特に 、GET以外のHTTPメソッド、または特定のMIMEタイプの でのPOST使用)の副作用を引き起こす可能性があるHTTP要求メソッドの場合、この仕様ではブラウザに要求を "プリフライト"するように指示していますサーバからの のサポートされたメソッドをHTTP OPTIONSリクエストヘッダで募集し、サーバの からの "承認"の際に、実際のHTTP要求 メソッドを使用して実際のリクエストを送信します。サーバーは、 要求で「資格情報」 (CookieとHTTP認証データを含む)を送信する必要があるかどうかをクライアントに通知することもできます。

詳細については、http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/を参照してください。

関連する問題