Может ли SWF (с использованием URLLoader) получить доступ к веб-службе HTTPS?

У меня есть fla (с использованием ActionScript 3.0), который я компилирую во Flash. Я использую URLRequest и URLLoader для доступа к веб-службе http.

var loader:URLLoader = new URLLoader();     
var request:URLRequest = new URLRequest("http:test.webservice.com");    
try {
   loader.load(request);
} catch (error:Error) {
   trace("Unable to load requested document.");
}

Это отлично работает, однако, если я попытаюсь получить доступ к https-адресу, я получаю

httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0]
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: https://test.webservice.com"]

Как я могу получить данные из веб-службы https? Должен ли SWF размещаться на странице, защищенной SSL?


person dan    schedule 07.09.2009    source источник


Ответы (2)


Если вы установите проигрыватель отладки флэш-памяти, вы, вероятно, увидите в журнале следующее:

** Security Sandbox Violation ***
Connection to https://www.example.com/service/ halted - not permitted from http://www.example.com/your.swf

Error: Request for resource at https://www.example.com/service/ by requestor from http://www.example.com/your.swf is denied due to lack of policy file permissions.

По умолчанию SWF-файл, размещенный в http, не может получить доступ к https — он считается другим доменом.

Вам потребуется настроить соответствующий файл политики crossdomain.xml, убедившись, что Content-Type имеет значение text/* или другое значение из белого списка. Кроме того, вам понадобится файл метаполитики с параметром «secure=false», который позволит получить доступ к https из http.

  <allow-access-from domain="www.example.com" secure="false" />

Дальнейшее чтение:

Изменения файла политики в Flash Player 9 и Flash Player 10

person grae.kindel    schedule 30.09.2010

Ознакомьтесь с междоменной политикой в ​​документации по сценарию действий.
http://kb2.adobe.com/cps/142/tn_14213.html

Защищенный сервер, обеспечивающий доступ к фильмам, размещенным по незащищенному протоколу.

Не рекомендуется разрешать содержимому HTTP доступ к содержимому HTTPS. Эта практика может поставить под угрозу безопасность, предлагаемую HTTPS.

Однако могут быть случаи, когда устаревшему содержимому Flash разрешен доступ к данным сайта HTTPS. Во Flash Player 7 это больше не разрешено по умолчанию. Чтобы разрешить доступ к данным HTTPS с помощью Flash-роликов, передаваемых через HTTP, используйте безопасный атрибут в теге «allow-access-from» и установите для него значение false.

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


        <cross-domain-policy>


        <allow-access-from domain="www.company.com" secure="false" />


        </cross-domain-policy> 

Он сохраняется как crossdomain.xml и помещается в корень сайта HTTPS-сервера.

person Marco Luglio    schedule 16.11.2009
comment
Дополнительная информация или даже ссылка сделают этот ответ намного лучше. - person Tomas; 09.08.2011