Доступ к веб-сервису из jQuery - пересекает домен

Я пытаюсь получить доступ к wcf сервису от клиента jQuery

Конкретно этот пример http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4

Все работы хорошо, когда клиентская веб-страница находится на том же домене как сервис

Как только я перемещаю клиентскую веб-страницу в другой домен, это повреждается. Это наклон достигает сервиса и сбоев запроса

Это происходит для всех примеров, ASMX, REST и WCF

какие-либо идеи, как получить этот рабочий крест daomain?

18
задан ChrisCa 23 April 2010 в 09:43
поделиться

4 ответа

Вы нарушаете политику одного и того же происхождения. Веб-служба, к которой вы обращаетесь, должна находиться в том же домене, что и сценарий jQuery, выполняющий запрос. Эта политика применяется всеми браузерами для предотвращения, например, атак межсайтового скриптинга и внедрения кода в веб-приложения.

Есть разные способы обойти это, включая JSONP, Proxies или Flash.

Нам понадобится немного больше информации, прежде чем мы сможем предложить, какую технику вам следует использовать. Я предпочитаю JSONP . А пока вот небольшое прочтение:

http://taossa.com/index.php/2007/02/08/same-origin-policy/

https://developer.mozilla.org/ En / Same_origin_policy_for_JavaScript

Вот пример использования JSONP:

url = "http://www.test.com/getData.php?callback=parseResults";

document.body.appendChild((function() {
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.src = url;
    return newScript;
})());

function parseResults(data) {
    alert(data);
}
10
ответ дан 30 November 2019 в 09:30
поделиться

Вы можете попробовать JSONP (JSON с заполнением) . Короче говоря, он включает добавление элемента сценария на страницу с URL-адресом веб-службы в качестве src. Затем веб-служба обертывает JSON в качестве первого аргумента функции обратного вызова, которая выполняется при анализе сценария.

На элементы скрипта не распространяется действие Same Origin Policy , поэтому они могут обойти эту проблему ..

1
ответ дан 30 November 2019 в 09:30
поделиться

Обычно вы не сможете; современные браузеры ограничивают это, чтобы предотвратить атаки межсайтового скриптинга. Одним из способов решения этой проблемы может быть использование "дополненного" JSON, JSONP, который вставляет результаты в элемент сценария на вашей странице. Здесь есть образец Microsoft WCF , который, кажется, делает это.

0
ответ дан 30 November 2019 в 09:30
поделиться

Я столкнулся с той же проблемой в течение 2 дней, и я нашел решение, и после долгих поисков в Интернете оно оказалось элегантным. Мне нужен xss Ajax для некоторых клиентов виджетов, которые перетаскивают поток данных с веб-сайтов уровней в мое приложение Rails. вот как я это сделал.

0
ответ дан 30 November 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: