Как получить доступ к веб-сервису consumer REST с помощью Silverlight (использовать прокси?) Без clientaccesspolicy.xml или crossdomain.xml

#silverlight #web-services #cross-domain

#silverlight #веб-сервисы #междоменный

Вопрос:

Если вы хотите получить доступ к некоторым веб-службам REST с помощью своего приложения Silverlight, стороннему серверу (на котором находится служба, к которой вы хотите получить доступ) требуется clientaccesspolicy.xml или crossdomain.xml в корневой папке.

Но как мне использовать или получить доступ к службе REST, которая отвечает XML-файлом, с моим приложением Silverlight, но БЕЗ каких-либо clientaccesspolicy.xml или crossdomain.xml быть на этом сервере?

если я напишу URL-адрес службы в поле адреса моего браузера, я смогу получить доступ к сервису и увидеть ответ в браузере. вы можете получить доступ к сервису с помощью GET.

редактировать: я уже предполагаю, что мне придется использовать какой-то прокси, но как для RESTful service? Это клиентский или серверный прокси?

С чего начать?

Ответ №1:

Политика безопасности SL запрещает вам доступ к адресам в другом домене. Итак, решение состоит в том, чтобы создать прокси-сервер в домене вашего приложения SL, который будет перенаправлять запросы на нужную вам веб-службу.

Комментарии:

1. Я знаю о прокси, но только с сервисами soap (wsdl). Как это сделать с помощью службы REST? Я не могу найти ни одного примера, как получить доступ к службе rest без crossdomain.xml но с прокси-сервером!

2. Вы должны закодировать прокси в своем веб-проекте, а не на стороне клиента. Таким образом, ваш сервер под управлением .NET (или Java или что-то еще) не попадает под ограничение безопасности Silverlight.

3. Да, но что это за прокси? Если бы я вызвал службу soap или wcf, я мог бы использовать этот инструмент SLsvcUtil.exe для создания прокси-серверов из документов метаданных службы. Но я вызываю службу REST.

4. Вы должны создать его вручную, с API, достаточным для выполнения всех ваших вызовов.

Ответ №2:

Приведенный выше ответ правильный. Я создал клиентскую библиотеку Silverlight, которая удобна для использования REST. Но, что более важно, я включил переход к службе REST API BitBucket на ASP.NET Ядро, которое демонстрирует, как включить clientaccesspolicy для Silverlight. Все это в этом репозитории Git:

https://bitbucket.org/MelbourneDeveloper/restclient-.net

NuGet для библиотеки — это установочный пакет RestClient.NET