当我没有脚本访问权限时,如何获取正在加载swf的页面域?

时间:2010-10-22 06:46:16

标签: actionscript-3 flash

我需要我的swf能够看到它加载的页面的域。通常,对于这个我只看外部接口上的window.location,但在这种特殊情况下,swf将嵌入allowcriptaccess =“never”,因此不会起作用。是否有一个真正的api会给我这个或者我是否必须诉诸丑陋的黑客?

4 个答案:

答案 0 :(得分:2)

Actionscript 3实际上有一个你可以在flash.system.Securityhttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Security.html#pageDomain)中直接查询的属性,如下所示:

import flash.system.Security;
...
var domain:String = Security.pageDomain;

它将为您提供包含swf的HTML页面的" [t]域名部分。"

答案 1 :(得分:0)

你试过这个:

var pageURL:String = stage.loaderInfo.url;

答案 2 :(得分:0)

loaderInfo.loaderURL

答案 3 :(得分:0)

事实证明,没有直接的方法可以做到这一点。但是,您可以执行以下操作:

  1. 让swf的路径转到服务器上的脚本
  2. 让脚本读取referer [sic]标头,将302读取到swf文件所在的静态文件服务器,将referer的值放入get变量
  3. 解析网址(从loaderInfo.url获取),并提取您添加的变量。
  4. 为了防止这个值被伪造(由直接链接到静态文件服务器的人,跳过重定向),你必须让你的静态文件服务器验证get变量的值是否与中的值相同在提供文件之前的referer标题(我知道你可以在nginx中完成)。