Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash播放器,它嵌入的网页的域名?_Flash_Apache Flex_Web_Dns_Ip Address - Fatal编程技术网

Flash播放器,它嵌入的网页的域名?

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外部接口调

我开发了一个flex应用程序(flex 4.5.1)。我希望flex应用程序只能由我允许的域名使用。一旦加载了应用程序,我就会与远程数据库检查域名是否有效

问题是flash player只返回用户机器的域名。我想要的是flex应用程序所属网站的域名。例如,如果我浏览flash应用程序的网页是www.abc.com/index.html,我需要www.abc.com或abc.com。可能吗?我尝试过的每个方法都只返回网站访问者的计算机名


谢谢

您可以向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论坛中问过这个问题:)。主要问题是:

  • 您可以使用
    stage.loaderInfo.url
    ,但这会返回swf的url,swf可以托管在其他地方(也许也可以)。此外,如果站点使用自定义预加载程序,那么它可能是该预加载程序的url,而不是您的swf
  • 您可以使用
    ExternalInterface
    ,但首先,需要启用Javascript,如果您正在使用它的站点使用iframe嵌入您的swf,它将中断
  • 您可以使用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;