我工作的公司有自己的基于Flash的视频播放器,我从我们的高管那里得到的问题是“我们可以告诉我们的播放器嵌入了什么网站?”
首先,我假设我可以使用Apache mod_rewrite,解压缩HTTP_REFFER,并将其附加到请求的URL的末尾。因此,当浏览器获得http://.../viewer.swf时,我可以点击?ref = otherdomain.com
但是,我认为我们的CDN不会满足我们的htaccess文件。此外,大多数access_log条目都显示破折号而不是域。
所以我在这里提出这个问题,看看我是否有任何想法或解决方案。目前,一切都指向'不可能'。
答案 0 :(得分:0)
不确定您是否需要捕获此内容,但是您的Flash播放器是否可以获取客户端上的URL(或者可能包含帧?)然后POST / PUT / GET返回服务器?我认为它可以在检索viewer.swf之后但在打开内容流之前做到这一点(潜在的玩家如何工作的假设)。
不确定这是否有用。
答案 1 :(得分:0)
使用ExternalInterface,它可以在父页面中调用javascript函数:
import flash.external.ExternalInterface;
var url:String = ExternalInterface.call('window.location.href.toString');
唯一的问题是如果用户关闭了javascript,那么url值将为null。
答案 2 :(得分:0)
referer通常存储在每个请求的访问日志文件中,不是吗?
对于嵌入式电影播放器的调用,访问CDN的访问日志文件不是最容易的事吗?
如果那不是一个选项:我不是一个Flash人,但它必须才能以某种方式使用Actionscript在电影中掌握电影的引用者,而不会遇到麻烦域名安全。毕竟,它是在对电影提出请求时可用的信息。
答案 3 :(得分:0)
这可能是错的,但我认为你可以这样做。将此代码放在应用程序的根级别(在舞台上或文档类中的时间轴上):
trace(this.loaderInfo.url)
如果我没错,那会对你有所帮助。我在几年前为视频服务构建了类似的东西,它所提取的视频名称来源于它所在文件夹的名称。如果有帮助,请告诉我!
编辑:哦,对 - 一旦你拥有了它,编写一个能够接受它作为字符串并将其存储在数据库或其他任何东西中的Web服务非常简单。您甚至可以将它绑定到分析服务 - MyAnalyticsFunction.call(myUrl) - 并且会为您处理它,但这取决于您的设置方式。
但是,简短的回答 - 是的,.swfs知道他们住在哪里。
答案 4 :(得分:0)
我能够设计一种使用mod_rewrite获取引用者的方法。以下问题与方法有关。基本上,通过使用重写规则,我可以获取引用,然后使用附加的查询字符串重定向到实际的SWF。
Is it possoble to obtain the hostname only from HTTP_REFERER with mod_rewrite?