PDA

Просмотр полной версии : Веб сервис и проблема безопасности.


andruha_derby
29.09.2010, 11:43
Доброго времени суток.

Есть веб сервис http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL
Вызываю из flex 4.1/ Flash Palyer 10.1 метод сервиса GetLatestDateTime

Вот таким кодом

public function sendSoap():void {
_webService = new WebService();
_webService.wsdl = URL_SERVICE;
_webService.showBusyCursor = true;
_webService.addEventListener(FaultEvent.FAULT, onWebserviseError);
_webService.loadWSDL();


_webService.GetLatestDateTime.addEventListener(ResultEvent.RESULT, onWebserviseResult);
_webService.GetLatestDateTime();
}

private function onWebserviseResult(event:ResultEvent):void {
Alert.show(String(event.result));
}


Метод возвращает дату и локально( из флеш билдера) отлично работает.
Но при загрузке на сервак -- получаю секьюрную ошибку.
На серваке сервиса лежит crossdomain.xml И на серваке "флешки" лежим crossdomain.xml


<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>


Подскажите, пожалуйста, как побороть такую проблему. Нужен доступ к этому веб сервису с сайта.

з.ы. Пробовал менять содержимое crossdoamin.xml на клиенте(сервере, где лежит флешка) -- не помогло.

С уважением, Андрюха

alatar
29.09.2010, 12:19
От кроссдомена на вашем сервере, в данном случае, ничего не зависит. Необходимо, что бы ваш домен был разрешен в кроссдомене сервиса.

andruha_derby
29.09.2010, 14:01
Насколько понимаю строка( на сервере веб сервиса)
<allow-access-from domain="*" />
как раз разрешает доступ для любого домена.

alatar
29.09.2010, 14:04
Если она там есть, то да. У вас просто не понятно, где лежит этот кроссдомен который вы тут привели.

Добавлено через 3 минуты
а что в ошибке?

andruha_derby
29.09.2010, 14:21
В ошибке приходит такое( на тестовом серваке)

(mx.messaging.messages::ErrorMessage)#0
body = (null)
clientId = "DirectHTTPChannel0"
correlationId = "875E2DDC-1D91-FC6D-DFFB-5CE14BE75C51"
destination = ""
extendedData = (null)
faultCode = "Channel.Security.Error"
faultDetail = "Destination: DefaultHTTP"
faultString = "Security error accessing url"
headers = (Object)#1
DSStatusCode = 0
messageId = "C414CB53-A37B-C9DA-595D-5CE14BFAFB56"
rootCause = (flash.events::SecurityErrorEvent)#2
bubbles = false
cancelable = false
currentTarget = (flash.net::URLLoader)#3
bytesLoaded = 0
bytesTotal = 0
data = (null)
dataFormat = "text"
errorID = 0
eventPhase = 2
target = (flash.net::URLLoader)#3
text = "Error #2170"
type = "securityError"
timestamp = 0
timeToLive = 0


Добавлено через 33 часа 40 минут
С проблемой с безопасностью в веб сервисах ник-то не сталкивался?
Может прокси какой-то нужно использовать?

з.ы. Хелп. Очень важный вопрос.

woland24
19.08.2011, 12:13
Точно такая же проблема у меня, ТС ты нашел решение?

Добавлено через 13 минут
Нашел ответ, в crossdomain.xml нужно было добавить строку <allow-http-request-headers-from domain="*" headers="*"/>

PainKiller
21.05.2014, 01:56
Добавил не помогло