Есть ли способ получить веб-страницу с Actionscript ??? Я получаю ошибку SecurityError - PullRequest
1 голос
/ 11 июля 2010

Я пытаюсь получить веб-страницу с помощью Actionscript, но продолжаю получать эту ошибку (пример попытки получить github.com):

[SWF] /get-webpage.swf - 2 708 байт после распаковки Ошибка: запрос ресурса на http://github.com по запросу http://localhost:4567/get-webpage.swf отказано из-за отсутствия прав доступа к файлу политики.

* Нарушение безопасности песочницы * Подключение к http://github.com прекращено - не разрешено с http://localhost:4567/get-webpage.swf

Есть ли способ заставить это работать в Actionscript? Как файл crossdomain.xml играет на этом? Насколько я понимаю, веб-сайт помещает crossdomain.xml в свой корень, указывая, что swf может получить доступ к своим материалам. Это верно? Что мне нужно для того, чтобы вышеуказанное сработало? Код, с которым я работаю, в основном такой:

var request:URLRequest = new URLRequest("http://github.com")
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, complete);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, error);
loader.load(request);

function complete(event:Event):void {
  trace(event.target.data);
}

function error(event:SecurityErrorEvent):void {
  trace(event.text);
}

С этим в файле HTML:

var flashvars = {};
var params = {allowscriptaccess: "always"};
var attributes = {id: "my_flash", name: "my_flash"};
swfobject.embedSWF("/get-webpage.swf", "flash_content", "50%", "50%", "10.0.0", "playerProductInstall.swf", flashvars, params, attributes, swfHasLoadedSir);

Возможно ли обойти эту ошибку безопасности?

1 Ответ

7 голосов
/ 11 июля 2010

КОРОТКИЙ ОТВЕТ, №.

СРЕДНИЙ ОТВЕТ, НЕТ. Я вижу, что у github есть политика междоменного XML. https://github.com/crossdomain.xml

Это файл, который автоматически загружается при попытке получить контент из другого домена.

В этом XML-файле говорится, что только флэш-память на github может высасывать данные. Итак, github явно сказал, что они не хотят, чтобы вы использовали flash для загрузки любого их контента.

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
  <allow-access-from domain="github.com" />
    <allow-access-from domain="gist.github.com" />
    <site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>

Я думаю, что причина этого поведения вспышки в том, что люди + компании будут доверять вспышке. Я думаю, что этот механизм мог бы предотвратить массовые атаки DOS (вспомните, что Flash Banner, загруженный на новостной сайт, попал, скажем, на github, он мог вызвать огромную нагрузку).

Вы можете отправить электронное письмо на github и добавить свой домен в их список в файле междомена, но это может занять некоторое время и много политики.

ДОЛГО ОТВЕТ, ДА. Вы можете создать HTTP-прокси, используя PHP или что-то подобное, чтобы добавить веб-страницу. PHP или код должен работать в том же домене, с которого вы загрузили SWF-файл. например, youdomain.com/folder/proxy.php. Вам нужно было бы попросить этого прокси-сервера принести вам веб-страницу на PHP и вернуть результаты обратно во флэш-память. Весь этот процесс немного мучителен, особенно если вы работаете с веб-сервисом, где вам нужно отправлять параметры или HTTP-заголовки. В Интернете есть PHP-файлы с открытым исходным кодом, которые вы можете установить.

Удачи! Вернуться к просмотру Трансформеры 2 с Меган Фокс. Ах да.

...