Flash播放器,它嵌入的网页的域名?
我开发了一个flex应用程序(flex 4.5.1)。我希望flex应用程序只能由我允许的域名使用。一旦加载了应用程序,我就会与远程数据库检查域名是否有效 问题是flash player只返回用户机器的域名。我想要的是flex应用程序所属网站的域名。例如,如果我浏览flash应用程序的网页是www.abc.com/index.html,我需要www.abc.com或abc.com。可能吗?我尝试过的每个方法都只返回网站访问者的计算机名Flash播放器,它嵌入的网页的域名?,flash,apache-flex,web,dns,ip-address,Flash,Apache Flex,Web,Dns,Ip Address,我开发了一个flex应用程序(flex 4.5.1)。我希望flex应用程序只能由我允许的域名使用。一旦加载了应用程序,我就会与远程数据库检查域名是否有效 问题是flash player只返回用户机器的域名。我想要的是flex应用程序所属网站的域名。例如,如果我浏览flash应用程序的网页是www.abc.com/index.html,我需要www.abc.com或abc.com。可能吗?我尝试过的每个方法都只返回网站访问者的计算机名 谢谢您可以向javaScript函数添加Flash外部接口调
谢谢您可以向javaScript函数添加Flash外部接口调用。javaScript函数可以返回位置 e、 g 及 编辑 对于那些不想通过Javascript实现这一点的人:您不需要Javascript:) 只需从Flash向服务器发送请求 然后检查与http REFERER相对应的服务器端变量(在ColdFusion中,its
CGI.http\u REFERER
。在PHP中,its$\u服务器['http\u REFERER'];
)
这将包含发送请求的swf文件的url。没有100%可靠的方法来获取swf的当前url(我以前在MochiMedia论坛中问过这个问题:)。主要问题是:
- 您可以使用
,但这会返回swf的url,swf可以托管在其他地方(也许也可以)。此外,如果站点使用自定义预加载程序,那么它可能是该预加载程序的url,而不是您的swfstage.loaderInfo.url
- 您可以使用
,但首先,需要启用Javascript,如果您正在使用它的站点使用iframe嵌入您的swf,它将中断ExternalInterface
- 您可以使用PHP和引用头,但它会遇到与js版本相同的问题
我使用像SecureSWF这样的东西(http://www.kindi.com)由于他们有网站锁定和加密等功能,我无法告诉你它是如何工作的,或者如果它与上面的3种方法不同,这对他的目的是没有帮助的,因为运行该应用程序的网站可能伪造一个假有效名称。谢谢Pranav。这是一个很好的答案。但我不能100%肯定我会得到一个有效的结果。正如felipemaia所说,有可能伪造名称和第二个窗口。已知location在某些浏览器中存在问题,即使用户从正确的域浏览,也会使我的应用程序变得无用。更改了我的答案,请在outPranav中检查,感谢更新。但仍然存在一个问题。比如说,网站abc.com可以将flash播放器的源代码嵌入到另一个网站,比如xyz.com。在这种情况下,flash player出现在abc.com上,而实际上它只允许在xyz.com上工作。请求的URL仍然是xyz.com站点的URL,不是吗?我认为'Application.Application.url'返回请求swf的url。但问题是如何找到嵌入播放器的网页的域名。再次感谢:)在我的实验中(几年前);如果SWF位于与封闭页面不同的域中,JavaScript调用将抛出错误。(研究跨站点脚本:)。不过,我认为有一个属性可以设置为允许这种访问,就像SWF嵌入HTML页面一样。在为flextras组件创建水印代码时,我花了很多时间研究这类问题。没有什么是可靠的;这不值得我们费心。我们最终放弃了通过“代码”方法强制执行这类事情。
//javascript
function getLocation() {
return window.location;
}
//AS3
var windowLocation:String=ExternalInterface.call(getLocation) as String;