flex и веб-сервис .net 2.0, как разрешить доступ из других доменов?
-
03-07-2019 - |
Вопрос
Я создал проект в flex builder с нулевым типом сервера приложений.
Во время отладки я могу получить доступ к веб-сервису со своего локального компьютера, находящегося на сайте. http://mysite.com/ws/ws.aspx?wsdl
Когда я загружаю гибкое приложение на mysite.com/myapp.html, оно работает отлично.
Но когда я загружаю его на myapp.mysite.com/myapp.html, он не получает доступа к веб-сервису.
Кто-нибудь знает, чего мне не хватает?
Спасибо
P.S.WS был создан с помощью VB.net, и когда я создаю гибкий проект с типом сервера приложений, установленным на .net, он не будет получать доступ к WS с моего локального компьютера.
это мой файл crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
**Я предполагаю, что это не проблема гибкости, а функция безопасности .net...который я не знаю как настроить.
.NET не позволит приложениям использовать его за пределами своего домена.**
Решение
По умолчанию Flex не разрешает доступ к веб-службам на удаленных хостах.Это функция безопасности Flex.Поскольку ваше приложение Flex развернуто на myapp.mysite.com
он находится на другом хосте, чем сервис по адресу mysite.com
.
Вы можете добавить crossdomain.xml
на mysite.com, где Flex проверит, разрешает ли служба доступ из разных доменов.А crossdomain.xml
файл должен находиться в корневом каталоге домена (mysite.com/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="*" to-ports="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Более подробная информация в Гибкая документация, особенно статья в базе знаний.
Другие советы
Попробуйте проверить запросы с помощью Tamper Data (расширение для Firefox).Убедитесь, что приложение находит файл crossdomain.xml.Если путь неверный, это ваша проблема.