2012-01-08 3 views
6

Sto guardando this domanda e in esso è un collegamento a http://hacks.mozilla.org/2011/03/the-shortest-image-uploader-ever/ che ha il seguente codice:Come funziona questa richiesta di AJAX di Cross Domain?

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); 

Come fa questo lavoro trasversale richiesta di dominio? Pensavo che di regola ci sono restrizioni di sicurezza che impediscono alle persone di fare proprio questo.

risposta

1

Imgur implementa Resource Sharing Cross-Origin (CORS) .

Le opere canoniche CORS con l'aggiunta di nuove intestazioni HTTP che permettono server di servire le risorse per i domini di origine consentiti. I browser supportano queste intestazioni e applicano le restrizioni stabilite. Inoltre, per i metodi di richiesta HTTP che possono causare effetti collaterali sui dati utente (nello specifico , per i metodi HTTP diversi da GET, o per l'utilizzo POST con determinati tipi MIME), la specifica obbliga i browser a "preflight" , sollecitando i metodi supportati dal server con un'intestazione di richiesta OPZIONI HTTP e quindi, dopo "approvazione" dal server , inviando la richiesta effettiva con il metodo effettivo HTTP . I server possono anche notificare ai clienti se le "credenziali" (inclusi cookie e dati di autenticazione HTTP) devono essere inviate con le richieste .

Vedere http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ per ulteriori informazioni.