Может ли сайт заблокировать вызов ajax со ссылкой на другой сторонний сайт? - PullRequest
0 голосов
/ 07 апреля 2011

Итак, у меня есть букмарклет, который, кажется, не работает на некоторых сайтах.

Вот что происходит.Bookmarklett (существует на панели закладок) запускает последовательность javascript, которая создаст div с содержимым на любой странице, на которой вы сейчас находитесь.После создания div он отправит запрос ajax GET на страницу php на моем сервере (то есть страница, на которую загружена закладка, не на моем сервере, этонаходится где-то еще, ajax запрашивает данные с моего сервера для отправки на веб-сайт, на который загружен bookmarklett).

По-видимому, я сам не видел эту ошибку, мне сказали, чтоНе удалось получить ajax-вызов, поэтому динамические данные не были переданы в построенный div.

Порядок событий следующий: Bookmark Clicked -> Создает модальное всплывающее окно div на просматриваемой странице -> запускаетajax-вызов моего сервера, передача уникального идентификатора пользователя для извлечения некоторых данных -> затем заполнение динамического содержимого полученными данными.

По-видимому, на некоторых сайтах запрос ajax никогда не выполнялсяПолучено обратно.

Могут ли некоторые сайты заблокировать мой букмарклет от сбора данных через ajax с моего сайта?Возможно ли, что сайт испортил запрос, отправляемый на мой сервер для ответа?

Если да, есть ли обходной путь?Или мне нужно отбросить все это вместе.

Так работает мой ajax-запрос, и я не видел сбой, но, по-видимому, это произошло .. Возможно, это ошибкасо стороны пользователей (возможно, коснулся некоторого кода, предоставляющего данные для отправки с помощью запроса GET, хотя я не уверен)

jquery.ajax({
    type:"GET",
    url:"mysite.com/api/getStuff",
    data:"format=jsonp&userid=1234",
    success:function(data){
         // do stuff with the retrieved data
    },
    error:function(err, msg){
         // response was not received
    }
});

Ответы [ 3 ]

1 голос
/ 07 апреля 2011

XMLHTTPRequest подчиняется той же политике происхождения , которая применяется большинством браузеров.По соображениям безопасности он ограничивает XHR тем же протоколом, доменом и портом, что и исходный запрос страницы.

Посещение указанной мной ссылки также поможет вам найти обходные пути для этого, если вы этого хотите.делать.

1 голос
/ 07 апреля 2011

Запросы между доменами ajax ограничены. Используйте dataType 'jsonp' или 'script'.

Обратите внимание, что «Междоменные запросы и dataType: запросы« jsonp »не поддерживают синхронную работу». Более подробная информация доступна на официальной документации jquery

0 голосов
/ 07 апреля 2011

Я знаю по своему опыту, что некоторые mod_rewrite rulz испортили мои запросы ajax, думаю, у вас могут возникнуть проблемы с использованием ajax + mod_rewrite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...