Flash Player, доменное имя веб-страницы, в которую он встроен? - PullRequest
1 голос
/ 19 ноября 2011

Я разработал приложение flex (Flex 4.5.1). Я хочу, чтобы приложение flex использовалось только теми доменными именами, которые я разрешаю. Как только приложение загружено, я проверяю с удаленной базой данных, допустимо ли доменное имя.

Проблема в том, что flash player возвращает только доменное имя компьютера пользователя. Что я хочу, так это доменное имя сайта, частью которого является гибкое приложение. Например, если веб-страница, которую я просматриваю для своего приложения флэш-памяти, - www.abc.com/index.html, мне нужен сайт www.abc.com или abc.com. Это возможно? Каждый использованный мною метод возвращает только имя компьютера посетителя сайта.

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Нет 100% надежного способа получить текущий URL вашего SWF (я спрашивал об этом раньше на форумах MochiMedia: https://www.mochimedia.com/community/forum/topic/reliably-find-the-page-url#d5fe7e47). Основные проблемы:

  • Вы можете использовать stage.loaderInfo.url, но это возвращает URL-адрес SWF, который может быть размещен где-то еще (возможно, это также может работать). Кроме того, если на сайте используется пользовательский предварительный загрузчик, то, скорее всего, это URL этого предварительного загрузчика, а не ваш swf.
  • Вы можете использовать ExternalInterface, но, во-первых, Javascript должен быть включен, и он сломается, если сайт, на котором вы его используете, встраивает ваш SWF с помощью iframe
  • Вы можете использовать PHP и реферальные заголовки, но это пострадает от той же проблемы, что и версия js.

Я использую что-то вроде SecureSWF (http://www.kindi.com), поскольку у них есть блокировка сайтов, а также шифрование и т. Д. Я не могу сказать вам, как это работает, или если это отличается от 3 методов выше

0 голосов
/ 19 ноября 2011

Вы можете добавить вызов Flash ExternalInterface к функции javaScript. Функция javaScript может вернуть местоположение

* 1003 например *

//javascript
function getLocation() {
    return window.location;
}

и

//AS3
var windowLocation:String=ExternalInterface.call(getLocation) as String;

EDIT

Для тех, кто не хочет делать это с помощью Javascript: ВАМ НЕ НУЖЕН JAVASCRIPT:)

Просто отправьте запрос на ваш сервер из Flash.

Затем проверьте переменную на стороне сервера, соответствующую http referrer (в ColdFusion - CGI.HTTP_REFERRER. В PHP - $_SERVER['HTTP_REFERER'];)

Он будет содержать URL-адрес файла swf, отправляющего запрос.

...