Доступ к веб-сервису из jQuery - перекрестный домен
Я пытаюсь запустить службу wcf из клиента jQuery
В частности, этот пример
http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4
Все работает хорошо, когда веб-страница клиента находится в том же домене, что и служба
Как только я перемещаю веб-страницу клиента в другой домен, он ломается. Он не может достичь службы, и запрос не работает.
Это происходит для всех примеров: ASMX, REST и WCF
любые идеи, как получить этот рабочий крест daomain?
Ответы
Ответ 1
Вы работаете против политики одинакового происхождения. Веб-служба, к которой вы обращаетесь, должна находиться в том же домене, что и jQuery script, который выполняет запрос. Эта политика применяется всеми браузерами для предотвращения, например, межсайтовых сценариев и атак на внедрение кода в веб-приложениях.
В нем есть различные способы, включая 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);
}
Ответ 2
Возможно, вы захотите проверить JSONP (JSON with Padding). Короче говоря, это связано с добавлением элемента script на страницу с URL-адресом веб-службы как src. Затем веб-служба обертывает JSON в качестве первого аргумента в функции обратного вызова, которая выполняется при анализе script.
Script элементы освобождаются от Same Origin Policy, вот как они могут обойти эту проблему.
Ответ 3
Как правило, вы не сможете; современные браузеры ограничивают это, предотвращая атаки межсайтового скриптинга. Одним из способов может быть использование "дополненного" JSON, JSONP, который вставляет результаты в элемент script на вашей странице. Здесь образец Microsoft WCF, который, похоже, делает это.
Ответ 4
Я столкнулся с той же проблемой в течение 2 дней, и я нашел решение, и он был элегантным после многопользовательской игры.
Мне нужен xss Ajax для некоторых клиентов виджета, которые вытаскивают потоки данных из ярусов в мое приложение Rails.
здесь, как я это сделал.