2010-01-12 2 views
1

Компания, в которой я работаю, имеет свой собственный видеопроигрыватель на основе Flash и вопрос, который я получаю от наших исполнителей: «Можем ли мы рассказать, на каком веб-сайте наш плеер встроен?»Возможно ли получить домен, в который встроено мое приложение Flash?

Сначала я предположил, что могу использовать Apache mod_rewrite, извлечь HTTP_REFFER и добавить его в конец запрошенного URL-адреса. Так как браузер получает , я могу похлопать по нему? Ref = otherdomain.com

Однако, я не думаю, что наш CDN будет обслуживать наш файл htaccess. Кроме того, в большинстве случаев все записи access_log показывают тире, а не домен.

Так что я задаю этот вопрос нашему здесь, чтобы узнать, поймаю ли я какие-либо идеи или решения. В настоящее время все указывает на «невозможно».

ответ

0

Мне удалось разработать метод получения реферера с помощью mod_rewrite. Следующий вопрос касается метода.В принципе, используя правила перезаписи, я могу захватить реферер, а затем перенаправить на фактический SWF с добавленной строкой запроса.

Is it possoble to obtain the hostname only from HTTP_REFERER with mod_rewrite?

0

Оговорка: я не знаю, вспышки вообще ...

Не уверен, как именно вам нужно захватить, но это возможно для флэш-плеера, чтобы захватить URL на клиенте (или фрейму может быть?), а затем POST/PUT/GET, чтобы вернуться на сервер? Я думал, что это может сделать это после извлечения viewer.swf, но до открытия потока контента (основополагающее предположение о том, как работают игроки).

Не уверен, что это полезно или нет.

+0

Нет, это не возможно в самой вспышки, что я в курсе. –

0

Использование ExternalInterface, которые могут выполнять вызовы функций яваскрипта в родительской страницы:

import flash.external.ExternalInterface; 

var url:String = ExternalInterface.call('window.location.href.toString'); 

Единственная проблема с этим состоит в том, что если пользователь Javascript выключен, то значение URL будет нулевым.

+0

Это метод, о котором я знал, но, к сожалению, allowScriptAccess установлен на sameDomain и, как правило, никогда не устанавливается такими сайтами, как MySpace.com. Таким образом, он не очень надежный, не используя безопасность удаленного сайта. –

0

Референт обычно хранится в файле журнала доступа для каждого запроса, не так ли?

Не было бы самой легкой вещью grep вашего файла журнала доступа CDN для вызовов встроенного проигрывателя фильмов?

Если это не вариант: я не являюсь флеш-мужчиной, но это должно быть быть доступным для просмотра рецензента фильма внутри фильма, используя ActionScript как-то, не попадая в проблему с междоменной безопасностью. В конце концов, это информация, которая доступна, когда запрос на фильм сделан.

+0

Теперь я еще не тестировал его, и я планирую в ближайшее время, поэтому я собираюсь установить URL-адрес на наш исходный сервер, а затем вытащить журналы. Тем не менее, журналы доступа, которые выполняют запросы на регистрацию, «столбец», где вы видите ссылочный домен, являются только «-». Поэтому я предполагаю, что сервер Apache не знает, откуда пришел запрос, поскольку он является внутренним для Flash. Я обязательно буду следить, если мои тесты показывают другое ожидание. –

+0

Ах, я вижу, я перепробовал эту часть, извините. Из того, что я вижу из быстрого взгляда на Google, это действительно кажется проблемой. Я действительно не понимаю, почему браузер не отправил заголовок реферата вместе с запросом в SWF. Мне было бы интересно услышать, если что-нибудь появится в ваших исследованиях. –

0

Не может быть ошибкой в ​​этом, но я думаю, вы можете просто получить его так. Поместите этот код на корневом уровне приложения (на временной шкале на сцене или в классе документа):

trace(this.loaderInfo.url) 

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

Редактировать: oh, right - как только вы это сделаете, довольно просто написать веб-службу, которая примет это как строку и сохранит ее в БД или что-то еще. Вы даже можете связать его с аналитическим сервисом - MyAnalyticsFunction.call (myUrl) - и это позаботится об этом для вас, но это зависит от того, как вы настроены.

Но, короткий ответ - да, .swfs знают, где они живут.

+0

Да, SWF знает, где он живет, но только абсолютный URL (где находится файл). loaderInfo.url не возвращает адрес, из которого просматривается SWF. –

+0

О, извините, я не очень оценил это различие. Это немного взломанный, но если это действительно важно, вы можете сделать javascript window.location как часть вашего кода для встраивания и передать его как FlashVar, а затем оттуда? Таким образом, по крайней мере, JS не приходит из .swf, хотя я не знаю, как хорошо это работает. Удачи, и дайте нам знать, если вы что-то придумаете! – Myk

Смежные вопросы