Может ли Flash скачать HTML со случайной веб-страницы? - PullRequest
1 голос
/ 07 февраля 2012

Я отказался от попыток получить источник веб-страницы (у меня нет этого сервера) в AS3.Все, что он делает, это выдает ошибку нарушения песочницы (2048).До сих пор я пришел к выводу, что единственные возможные решения:

  • Сделайте так, чтобы мой веб-сервер обслуживал содержимое в swf.
  • Создайте прокси-сервер для swf с кросс-доменом.xml.

Почему-то мои варианты отклоняются обоими вариантами, и меня подталкивают к лучшему решению.

Понятия не имею, возможно ли что-нибудь еще, есть здесь кто-нибудь?


РЕДАКТИРОВАТЬ: Может быть, какой-то хак, где 'A' может не понадобиться файл политики для прямой связи с 'B' :

enter image description here

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Как я вижу, вы запускаете свое приложение в браузере, я могу предложить загрузить HTML с помощью javascript (например, с XMLHttpRequest), а затем передать его в ваше приложение с помощью ExternalInterface.Я не уверен, что это лучше, чем решения, которые вы опубликовали.В любом случае, это хак на стороне клиента, и он отличается от вашего.

UPD: другой способ - создать невидимый фрейм и выполнить там
document.getElementByID('frameID').src=url;, после чего передайте document.getElementByID('frameID').innerHtml вSWF с ExternalInterface

1 голос
/ 11 февраля 2012

AS3 имеет несколько способов загрузки html с веб-страниц. Наиболее удобным, вероятно, является использование функции URLLoader.load().

    const targetURL:String = "www.example.com"

    var quest:URLRequest = new URLRequest()
    quest.url = targetURL

    var oader:URLLoader = new URLLoader()
    oader.addEventListener(Event.COMPLETE, doSomething)
    oader.load(quest)

Для получения дополнительной информации: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html

Если все сделано правильно, это должно загрузить html веб-страницы в виде строки.

Если я правильно понимаю вашу проблему, это, вероятно, не работает. Поэтому, конечно, есть несколько обходных путей, которые вы можете использовать.

Я помню, в старом проекте, который я выполнял с аналогичным препятствием, мое решение заключалось в том, чтобы иметь внешний SWF, записанный в AS2 (размещенный на другом сервере, моем FTP-сервере). Мой основной SWF загрузил AS2 SWF, используя Loader.load(). Обмен данными между двумя SWF с использованием LoacalConnection s (ссылка) . По какой-то причине сервер, на который я загрузил свой SWF, не позволил AS3 URLLoader.load(), но разрешил AS2 sendAndLoad().

Еще один обходной путь, который я использовал, я использовал внешнюю AS3 SWF по той же причине.

Я рекомендую вам поэкспериментировать с различными методами, ваш конкретный обходной путь может отличаться от того, что я рекомендовал, однако мои рекомендации могут указать вам верное направление.

И, конечно, хорошо, что мой обходной путь - то, что ваши старшие не заметят разницы. Основной SWF-файл будет размещен на том же сервере и будет функционировать, как предполагалось, с минимальным увеличением времени загрузки.

1 голос
/ 07 февраля 2012

Я думаю, простой PHP-прокси - это самый простой способ:

<?php
  echo system ("curl \"".$_GET["url"]."\"");
?>

И назвать его с

http://www.yourserver.com/pathtoyourscript/proxy.php?url=http://www.yoururl.com

не проверенным, но в целом он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...