【问题标题】:Flash Player, domain name of webpage it is embedded in?Flash Player,它嵌入的网页的域名?
【发布时间】:2011-11-19 07:11:38
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 在为 flextras 组件创建水印代码时,我花了很多时间来解决这类问题。简短的回答是没有什么是可靠的;这不值得我们费心。我们最终放弃了通过“代码”方法强制执行这类事情。

标签: flash apache-flex web dns ip-address


【解决方案1】:

没有 100% 可靠的方法来获取您的 swf 的当前 url(我之前在 MochiMedia 论坛中问过这个问题:https://www.mochimedia.com/community/forum/topic/reliably-find-the-page-url#d5fe7e47)。主要问题:

  • 您可以使用stage.loaderInfo.url,但这会返回 swf 的 url,它可以托管在其他地方(也许这也可以工作)。此外,如果网站使用自定义预加载器,那么它可能是该预加载器的 url,而不是您的 swf。
  • 您可以使用ExternalInterface,但首先需要启用 Javascript,如果您使用它的网站使用 iframe 嵌入您的 swf,它将中断
  • 您可以使用 PHP 和引用标头,但它会遇到与 js 版本相同的问题。

我使用 SecureSWF (http://www.kindi.com) 之类的东西,因为它们具有站点锁定和加密等功能。但我无法真正告诉您它是如何工作的,或者它是否不同于 3以上方法

【讨论】:

    【解决方案2】:

    您可以将 Flash ExternalInterface 调用添加到 javaScript 函数。 javaScript 函数可以返回位置

    例如

    //javascript
    function getLocation() {
        return window.location;
    }
    

    //AS3
    var windowLocation:String=ExternalInterface.call(getLocation) as String;
    

    编辑

    对于那些不想通过 Javascript 执行此操作的人:您不需要 JAVASCRIPT :)

    只需从 Flash 向您的服务器发送请求。

    然后检查与http referrer对应的服务器端变量(在ColdFusion中为CGI.HTTP_REFERRER。在PHP中为$_SERVER['HTTP_REFERER'];

    这将包含发送请求的 swf 文件的 url。

    【讨论】:

    • 出于他的目的,这无济于事,因为运行该应用程序的网站可能会伪造一个假的有效名称。
    • 谢谢普拉纳夫。这是一个很好的答案。但我不能 100% 确定我会得到一个有效的结果。就像 felipemaia 说的那样,有可能伪造名称,其次 window.location 已知在某些浏览器上存在问题,即使用户从正确的域浏览,也会使我的应用程序无用。
    • 改变了我的答案,看看
    • 普拉纳夫,感谢您的更新。但是仍然存在一个问题。比方说,站点 abc.com 可以嵌入 Flash 播放器,并将源设置为另一个站点上的播放器,例如 xyz.com。在这种情况下,Flash 播放器出现在 abc.com 上,而实际上只允许在 xyz.com 上运行。请求的 URL 仍然是站点 xyz.com 的 URL,不是吗?我认为“Application.application.url”返回请求 swf 的 url。但问题是如何找到嵌入播放器的网页的域名。再次感谢:)
    • 在我的实验中(几年前);如果 SWF 位于与封闭页面不同的域中,则 JavaScript 调用将引发错误。 (研究跨站脚本:en.wikipedia.org/wiki/Cross-site_scripting)。不过,我认为有一个属性可以设置为允许以 SWF 嵌入 HTML 页面的方式进行这种访问。
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2013-02-12
    • 2020-07-21
    • 2011-11-07
    • 2010-09-17
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多