Как работает этот запрос ajax для Cross Domain?
Я рассматриваю этот вопрос и в нем ссылка на http://hacks.mozilla.org/2011/03/the-shortest-image-uploader-ever/, который имеет следующий код:
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
Сервер отвечает параметром Access-Control-Allow-Origin, разрешающим запросы на междоменные запросы
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
Ответ 2
Imgur реализует совместное использование ресурсов Cross-Origin (CORS).
Стандарт CORS работает, добавляя новые HTTP-заголовки, которые позволяют серверам для обслуживания ресурсов до разрешенных доменов происхождения. Браузеры поддерживают эти заголовки и обеспечивать соблюдение установленных ими ограничений. Кроме того, для Методы HTTP-запроса, которые могут вызывать побочные эффекты для пользовательских данных (в в частности, для HTTP-методов, отличных от GET, или для использования POST с определенные типы MIME), спецификация требует, чтобы браузеры "предварять" запрос, запрашивая поддерживаемые методы с сервера с заголовком запроса HTTP OPTIONS, а затем после утверждения сервер, отправляющий фактический запрос с фактическим HTTP-запросом метод. Серверы также могут уведомлять клиентов о том, являются ли "учетные данные" (включая файлы cookie и HTTP-аутентификацию) должны быть отправлены с запросы.
Подробнее см. http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/.