WCF REST с JQuery AJAX - удаление / работа с той же политикой происхождения

Итак, я пытаюсь создать службу CEST WCF REST, которая вызывается jQuery. Я обнаружил, что jQuery требует, чтобы вызовы AJAX выполнялись в соответствии с той же политикой происхождения. У меня есть несколько вопросов о том, как мне поступить.

Я уже в курсе;
1. Хакерское решение JSONP с обратным вызовом сервера
2. Слишком большая нагрузка на сервер из-за наличия междоменного прокси.
3. Используйте Flash в браузере для вызова и настройку crossdomain.xml в корневом каталоге моего WCF-сервера.

Я бы предпочел не использовать их, потому что;
1. Я не хочу использовать JSON, или, по крайней мере, я не хочу ограничиваться его использованием
2 Я хотел бы отделить сервер, который обслуживает статические страницы, от сервера, который обслуживает состояние приложения.
3. Вспышка в этот день и возраст исключены.

Что я думаю: есть ли что-нибудь вроде файла crossdomain.xml в Flash, который работает для jQuery? Является ли эта политика «того же происхождения» частью jQuery, или это ограничение в определенных браузерах? Если это просто часть jQuery, возможно, я попробую покопаться в коде, чтобы обойти его.





Редактировать:
Шредд получил довольно много места, см. ниже. Чтобы сделать это в C #, я создал следующий метод, который должны вызывать все ваши сервисные методы:

private void BypassCrossDomain()
{
  WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
}

Важно отметить, что это допускает атаки с использованием межсайтовых сценариев, и вы также не можете использовать " * "когда вам нужно отправить сторонние куки с вашим запросом.

10
задан Steven Lu 2 July 2012 в 19:40
поделиться

2 ответа

Вы также можете рассмотреть возможность выделения дополнительного http-заголовка, который разрешит междоменные запросы к вашему веб-сервису.

Это описано здесь:

http://www.w3.org/TR/cors/

https://developer.mozilla.org/en/HTTP_access_control

Итак, если вы добавите следующий заголовок к любому содержимому, которое доставляет ваш веб-сервис:

Access-Control-Allow-Origin: *

браузер разрешит междоменные запросы к этому веб-сервису. Это поддерживается в большинстве современных браузеров (ff 3.5, IE 8, safari 4) и, кажется, очень хорошо работает для jquery-приложений, размещенных на домене foo.com, которые делают ajax-вызовы на bar.com

.
5
ответ дан 4 December 2019 в 03:15
поделиться

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

Я бы посоветовал вам лучше всего придерживаться решения JSONP. Да, вы можете утверждать, что это «хакерство», но это очень широко распространенный «хакерский прием» именно по тем причинам, с которыми вы сталкиваетесь (т.е. это один из единственно возможных вариантов).

Что касается ограничения на использование JSON, если вы контролируете оба конца вызова службы, нет причин, по которым вы не могли бы использовать шаблон использования стиля JSONP, но фактически не использовать JSON ... Ответ вашего сервера просто будет передан функции JavaScript на стороне клиента, поэтому вам не мешает вернуть, скажем, XML в строке, а затем выполнить синтаксический анализ и обработку вашего обратного вызова (хотя, вероятно, это подтолкнет вас к действительно "хакерскому" территория).

1
ответ дан 4 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

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