<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script>
$.get("http://example.com/", function(data) {
alert(data);
});
</script>
он делает запрос OPTIONS к этому URL, а затем обратный вызов никогда не вызывается ни с чем.
Когда это не кросс-домен, он работает нормально.
Разве jQuery не должен просто сделать вызов с <script>
узлом, а затем сделать обратный вызов, когда он загружен? Я понимаю, что не смогу получить результат (поскольку он междоменный), но это нормально; Я просто хочу, чтобы звонок прошел. Это ошибка или я что-то не так делаю?
jquery
xmlhttprequest
http-get
http-options-method
Пол Тарьян
источник
источник
Ответы:
Согласно MDN ,
источник
ВАРИАНТЫ взяты с http://www.w3.org/TR/cors/. См. Http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http-binding-made-easy/ для немного больше информации
источник
Если вы пытаетесь POST
Обязательно к
JSON.stringify
вашей форме данные и отправьте какtext/plain
.источник
Я не верю, что jQuery естественным образом выполнит запрос JSONP, когда ему будет предоставлен такой URL Однако он выполнит запрос JSONP, когда вы сообщите ему, какой аргумент использовать для обратного вызова:
Этот аргумент полностью зависит от принимающего скрипта (который не обязательно должен называться «jsoncallback»), поэтому в этом случае функция никогда не будет вызываться. Но, поскольку вы заявили, что просто хотите, чтобы скрипт на metaward.com выполнялся, он бы это сделал.
источник
Фактически, междоменные запросы AJAX (XMLHttp) не разрешены по соображениям безопасности (подумайте о том, чтобы выбрать «ограниченную» веб-страницу со стороны клиента и отправить ее обратно на сервер - это было бы проблемой безопасности).
Единственный обходной путь - обратные вызовы. Это: создание нового объекта сценария и указание src на конечный JavaScript, который является обратным вызовом со значениями JSON (myFunction ({data}), myFunction - это функция, которая что-то делает с данными (например, хранит их) в переменной).
источник
Просто измените «application / json» на «text / plain» и не забудьте JSON.stringify (request):
источник
У меня такая же проблема. Я решил добавить заголовки в мой PHP-скрипт, которые присутствуют только в среде разработки.
Это позволяет междоменные запросы:
Это сообщает предварительному запросу, что клиент может отправлять любые заголовки, которые он хочет:
Таким образом, нет необходимости изменять запрос.
Если у вас есть конфиденциальные данные в вашей базе данных разработчиков, которые могут быть утечки, подумайте об этом дважды.
источник
В моем случае проблема не была связана с CORS, так как я выпускал JQuery POST для того же веб-сервера. Данные были в формате JSON, но я пропустил параметр dataType: 'json'.
У меня не было (и я не добавил) параметра contentType, как показано в ответе Дэвида Лопеса выше.
источник
Похоже, что Firefox и Opera (также протестированные на Mac) не любят кросс-доменную архитектуру (но Safari вполне подойдет).
Возможно, вам придется вызвать локальный код на стороне сервера, чтобы свернуть удаленную страницу.
источник
Я смог исправить это с помощью следующих заголовков
Если вы находитесь на Nodejs, вот код, который вы можете скопировать / вставить.
источник