Может ли 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?

2 ответа

Решение

Если вы установите Flash Debug Player, вы, вероятно, увидите следующее в журнале:

** 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

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

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

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

Однако могут быть случаи, когда устаревшему Flash-контенту разрешен доступ к данным сайта HTTPS. В Flash Player 7 это больше не разрешено по умолчанию. Чтобы разрешить доступ к данным HTTPS с помощью Flash-фильмов, передаваемых по HTTP, используйте атрибут secure в теге "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-сервера.

Другие вопросы по тегам