Подтвердить что ты не робот

JQuery.ajax не работает, когда URL-адрес с другого сервера

Почему jQuery.ajax() выдает ошибку без сообщения об ошибке, если вы используете URL-адрес с dfferent сервером?

4b9b3361

Ответ 1

Это связано с ограничением запросов на кросс-домен, реализованных в браузере для XMLHttpRequests. Вы можете обойти это, используя JSONP в качестве формата, иначе вам понадобится прокси-сервер на стороне сервера для запроса.

Цитата из ajax documentation на http://jquery.com

Примечание. Все пульт (не на одном домен) должны быть указаны как GET, когда 'script' или 'jsonp' является dataType (потому что он загружает scriptиспользуя тег DOM script). Варианты Ajax которые требуют объекта XMLHttpRequest для этих запросов недоступны. Полные и успешные функции вызвали завершение, но не получить объект XHR; перед отправкой и функции dataFilter не называется.

Ответ 3

Как http://en.wikipedia.org/wiki/Cross-origin_resource_sharing говорит:

Совместное использование ресурсов (CORS) - это механизм, который позволяет веб-странице создавать XMLHttpRequests в другом домене. 1 Такие "кросс-доменные" запросы в противном случае были бы запрещены веб-браузерами в соответствии с политикой безопасности того же источника. CORS определяет способ взаимодействия браузера и сервера с тем, чтобы определить, разрешать или нет запрос на перекрестный исход. 2 Это более мощный чем разрешать только запросы с одним и тем же источником, но он более безопасен, чем просто разрешать все такие запросы с кросс-началом.

Для PHP это делается с помощью header():

<?php
header("Access-Control-Allow-Origin: http://example.com");
?>

CORS может использоваться как современная альтернатива шаблону JSONP. В то время как JSONP поддерживает только метод запроса GET, CORS также поддерживает другие типы HTTP-запросов. Использование CORS позволяет веб-программисту использовать регулярный XMLHttpRequest, который поддерживает лучшую обработку ошибок, чем JSONP. С другой стороны, JSONP работает с устаревшими браузерами, которые исключить поддержку CORS. CORS поддерживается большинством современных веб-браузеров. Кроме того, в то время как JSONP может вызывать проблемы XSS, где внешний сайт скомпрометировано, CORS позволяет веб-сайтам вручную анализировать ответы на обеспечить безопасность.

JSONP или "JSON с заполнением" - это технология связи, используемая в JavaScript. Он предоставляет способ запроса данных с сервера в другой домен, что запрещено обычными веб-браузерами, потому что той же политики происхождения.

Ответ 4

Метод ajax() внутренне использует XmlHttpRequest, который подчиняется той же политике домена http://en.wikipedia.org/wiki/Same_origin_policy. Вместо этого можно использовать метод getJson() для совершения междоменных вызовов.

Надеюсь, это поможет, Богдан

Ответ 5

Потому что если Same Origin Policy jQuery не позволит этого. Лучшим вариантом будет использование некоторой страницы прокси-сервера для получения требуемых страниц.

Ответ 6

Этот плагин jQuery будет выполнять базовый запрос перекрестного происхождения. Это не AJAX.But работает очень похоже на AJAX

https://github.com/jinujd/jQuery-Async-Form