Междоменный доступ к WCF - PullRequest
       10

Междоменный доступ к WCF

2 голосов
/ 23 ноября 2011

Я пользуюсь веб-сервисами WCF около года и считаю их очень полезными. Я всегда использовал и использовал их на одном и том же обслуживающем домене. Однако на этот раз я хочу использовать их в другом домене. Я понимаю, почему это происходит, из-за безопасности и так. У меня была такая же проблема с чтением RSS-каналов из внешнего домена.

Я провел некоторое исследование в этой области, и большинство людей говорят, что JSONP (дополненный JSON) решит эту проблему, но я подумал, что задам свой вопрос, потому что кто-то мог найти другой ответ или потому, что я использую. NET 4, ответ может быть проще.

Итак, я использую Jquery для использования этих спокойных веб-сервисов в другом домене. Я также использую .NET 4. Мои веб-сервисы представляют собой смесь GET и POST, поэтому на самом деле я ищу решение, которое будет работать как с GET, так и с POSTS в разных доменах. У кого-нибудь есть решение или примеры для этого? Мои веб-службы WCF находятся в моем веб-приложении ASP.NET. Я также включил crossdomainscriptaccessenabled в моей веб-конфигурации.

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Если вам требуется POST, JSONP, вероятно, не будет сокращать его. Поскольку он работает путем внедрения ссылки <script> на сторонний ресурс, JSONP по своей сути ограничен запросами GET.

В зависимости от ваших требований к поддержке браузера , CORS предоставляет вам полный доступ к междоменным службам. JQuery 1.5+ имеет отличную поддержку CORS. Вам нужно только добавить один или два HTTP-заголовка в ответы вашего домена WCF, чтобы включить его.

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

Чтобы прояснить вашу путаницу с ранее работавшим приложением iPhone, имейте в виду, что междоменное ограничение является тем, которое браузеры накладывают как часть своей реализации XMLHttpRequest. Это не ограничение, налагаемое самим WCF. Нативное приложение, работающее на iPhone, будет иметь свободный доступ к вашему сервису без изменений, подобно тому, как приложение Silverlight в браузере может (однако веб-приложение, запущенное на iPhone, столкнется с той же проблемой, что и вы) .

1 голос
/ 23 ноября 2011

Этот вопрос звучит так: Взвешивание междоменных опций JavaScript . Возможно, ответы там тоже вам помогут.

...