【发布时间】:2014-03-18 19:55:28
【问题描述】:
我一直在我的 AIR 2.7 项目中使用 Flex“HTML”组件。它是 HtmlLoader 类的包装器。
问题是 HTML 标头中的空引用自动设置为“app://[appname].swf”。这不是标准的,因为默认的引用行为应该是根本不设置任何引用。结果是我在使用 iframe 的某些网站上被拒绝访问(因为 iframe 的位置更改设置了一个空的引用)。
我无法控制这些请求在更改 iframe 的源时没有触发任何事件。
我已经考虑过在发送消息之前拦截所有网络调用并在必要时将referer设置为空的可能性。我的应用程序只是一个容器,其中加载了一个模块以便于更新,所以也许我可以在上面设置一个代理或类似的东西。
Flex中有什么办法可以拦截网络消息??
编辑:
在与 Adobe 员工交谈后,我在 Adobe Bug Base 中打开了一个关于此的错误:https://bugbase.adobe.com/index.cfm?event=bug&id=2945647
从我的 cmets 中提取的更多信息:
我已经尝试(使用 Charles 代理)模拟特定站点的一些案例。当发送一个空白或有效的引用来加载一些 swf 文件时,它通过了。但是,它拒绝对无效 (ex: app://) 的访问。这证实了引荐来源网址问题。
没有关于什么是有效或无效的正式规范。我指的是我正在测试的网站的期望。例如,cdn.nitrome.com/games/rubbletroubletokyo/rubbletroubletokyo.swf 有这样的引荐来源检查,将返回“拒绝访问”。如果请求发送时带有它认为无效的引荐来源网址,例如 app://foo.swf 甚至 http://www.google.com。如果没有发送引荐来源网址或与应该调用 swf 文件的页面一起发送正确的文件(在这种情况下为 http://www.nitrome.com/games/rubbletroubletokyo)。
该应用程序适用于儿童,并包含一个网络浏览器。只允许授权网站(父母或出版商),www.nitrome.com 将在发布时成为其中之一。当然,我必须确保发布时计划的一切都能正常工作!我已经成功地为nitrome.com 创建了一个hack,但它真的很具体。我们必须为遇到问题的每个网站创建 hack,这……嗯,耗时且难以维护
【问题讨论】:
标签: apache-flex actionscript-3 air