Javascript / JQuery ajax нужна помощь - PullRequest
1 голос
/ 04 мая 2011

Я немного запутался здесь, может быть, кто-то может помочь.

1) Вопрос запроса javascript ajax: Могу ли я использовать XMLHttpRequest для прямого запроса на любой другой веб-сайт - не на исходный сервер?

2) Вопрос запроса JQuery ajax: Могу ли я использовать $ .ajax для прямого запроса на любой другой веб-сайт - не на исходный сервер?

Просматривая веб-страницы, я обнаружил кое-что о том, как это может быть запрещено из-за XSS (межсайтовый скриптинг), и что обходной путь заключается в использовании языка серверных скриптов и веб-сервиса ... но все, что меня не касается.

Если кто-нибудь может ответить, пожалуйста, помогите!

Ответы [ 7 ]

1 голос
/ 04 мая 2011

Я считаю, что здесь есть смешение терминов. Это не имеет ничего общего с XSS. Причина, по которой вы не можете получить информацию с помощью javascript в разных доменах (даже http и https в одном и том же домене), связана с единой политикой происхождения, которая существует для предотвращения смешения сеанса на доверенном сайте с ненадежным без участия пользователя. прямое вмешательство (например, выбрав посещение другого домена). XSS - это совершенно другая концепция, связанная с встраиванием скриптов в страницу со злым умыслом для пользователя.

Что касается доступа через домены, все надежды не потеряны. XMLHttpRequest и .ajax () не имеют значения, но jsonp позволяет обмениваться информацией между доменами. Начиная с HTML5, также было введено postMessage(), что позволяет также осуществлять связь между доменами (и не менее со скриптами!)

0 голосов
/ 28 мая 2012

1) Вопрос запроса javascript ajax: Могу ли я использовать XMLHttpRequest для прямого запроса на любой другой веб-сайт - не на исходный сервер?

Нет, сервер в домене, к которому вы пытаетесь подключиться, должен принимать междоменный AJAX ; в противном случае единственный способ получить доступ к этим данным - использовать страницу на вашем сервере, которая будет передавать запрашиваемые данные вашим посетителям.

2) Вопрос запроса JQuery ajax: Могу ли я использовать $ .ajax для прямого запроса на любой другой веб-сайт - не на исходный сервер?

Технология jQuery AJAX на самом деле является оболочкой для собственного XMLHttpRequest, поэтому, если работает нормальный XMLHttpRequest, то же самое должно быть верно и для jQuery.

0 голосов
/ 04 мая 2011

Наконец, вы МОЖЕТЕ сделать междоменный ajax, если сервер, на который вы звоните, внедрил CORS и позволяет вашему домену вызывать его

0 голосов
/ 04 мая 2011

Да, это возможно с JSONP. Используйте это так:

$.ajax({
   url: 'remote_url',
   type: 'post',
   dataType: 'jsonp',  //This does the trick
   success: function(remoteData){
      //Use remoteData here. Note it's already json parsed, so it's a javascript object
   }
});

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

0 голосов
/ 04 мая 2011

jQuery .ajax() - это простой способ использовать XMLHttpRequest JavaScript в одной функции.В конце концов, это просто XMLHttpRequest.

Межсайтовый скриптинг (XSS) предотвращает все междоменные запросы, но да, вы можете использовать серверное решение для его преодоления.

Но тогдаесть JSONP, который делает , позволяя JavaScript выполнять межсайтовые запросы, но только для ограниченного набора данных.

0 голосов
/ 04 мая 2011

Нельзя выполнять межсайтовые запросы ajax.Когда вы используете jquery $ .ajax для получения данных из другого домена, за кулисами jquery берет URL-адрес и добавляет в заголовок документа включение.

Вы правы, это запрещено по соображениям безопасности.

0 голосов
/ 04 мая 2011

этот вопрос обсуждает ту же проблему.Вы должны получить содержимое другого сайта на стороне сервера

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