Как сделать междоменный запрос XHR - PullRequest
1 голос
/ 16 августа 2011

Как заставить работать XHR междоменный запрос - я попробовал 'Script Tag Hack', но он не работает или я делаю что-то не так. Какие-либо предложения?

Я бы хотел вызвать скрипт в домене A из B.

домен A: [index.html]

<head>
<script type="text/javascript" src="https://evilDomain/xhrTest.js"></script>
</head>

домен B: [xhrTest.js]

$.ajax({
      url: "https://evilDomain/processRequest",
      success: function(result){
        alert(result);
      }
});

отредактировано :

Я также пытался использовать JSONP следующим образом:

$.ajax({
      url: "https://evilDomain/processRequest",
      dataType: "jsonp",
      success: function(result){
        alert(result);
      }
});

Я использую контейнер TOMCAT, связано ли решение с заголовком Access-Control-Allow-Origin ?

Ответы [ 4 ]

3 голосов
/ 16 августа 2011

Да, вы можете добавить заголовок Access-Control-Allow-Origin к ответам вашего сервера. Это позволит вам делать междоменные запросы.

Затем можно дополнительно настроить, как требуется, с помощью Access-Control-Allow-Methods и Access-Control-Allow-Headers .

Подробнее см. https://developer.mozilla.org/en/HTTP_access_control

1 голос
/ 16 августа 2011

Обычно вы просите ваш сервер выполнить запрос за вас.

Другой вариант - позволить кому-то другому сделать это за вас (например, службе Yahoo).

Ваша проблемаявляется то, что код домена B все еще выполняется в контексте домена A .Следовательно, https://evilDomain/processRequest все еще не может быть прочитано, потому что код выполняется как домен A , даже если на самом деле он пришел из домена B .

1 голос
/ 16 августа 2011

Домен B JS включается в страницу, а затем выполняется со страницы, которая происходит из домена A, поэтому проблема.Для этого междомена вам нужно запросить ответ данных как сам «скрипт», а затем проанализировать его оттуда.

1 голос
/ 16 августа 2011

используйте JSONP или попросите службу в вашем собственном домене, позвоните в другой домен на стороне сервера и получите то, что вам нужно, таким образом.

...