Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Apache flex 拦截网络调用以强制Html标头引用为null_Apache Flex_Actionscript 3_Air - Fatal编程技术网

Apache flex 拦截网络调用以强制Html标头引用为null

Apache flex 拦截网络调用以强制Html标头引用为null,apache-flex,actionscript-3,air,Apache Flex,Actionscript 3,Air,我一直在AIR2.7项目中使用Flex“HTML”组件。它是HtmlLoader类的包装器 问题是HTML标题中的空引用会自动设置为“app://[appname].swf”。这不是标准的,因为默认的referer行为应该是根本不设置任何referer。结果是我使用iframe被拒绝访问某些网站(当位置从iframe设置为空引用时) 我无法控制这些请求,在更改iframe的源时不会触发任何事件 我考虑过在发送消息之前拦截所有网络呼叫并在必要时将referer设置为空的可能性。我的应用程序只是一个

我一直在AIR2.7项目中使用Flex“HTML”组件。它是HtmlLoader类的包装器

问题是HTML标题中的空引用会自动设置为“app://[appname].swf”。这不是标准的,因为默认的referer行为应该是根本不设置任何referer。结果是我使用iframe被拒绝访问某些网站(当位置从iframe设置为空引用时)

我无法控制这些请求,在更改iframe的源时不会触发任何事件

我考虑过在发送消息之前拦截所有网络呼叫并在必要时将referer设置为空的可能性。我的应用程序只是一个容器,其中加载了一个模块以便于更新,所以我可以在上面设置一个代理或类似的东西

有没有办法在Flex中截取网络消息

编辑:

在与Adobe员工聊天后,我在Adobe bug Base中打开了一个关于以下内容的bug:

更多信息摘自我的评论:

我尝试(使用Charles proxy)为特定站点模拟一些案例。当发送一个空白的或有效的引用以加载某个swf文件时,它将通过。但是,它拒绝访问无效的服务器(例如:app://)。这证实了推荐人的问题

关于什么是有效的或无效的,没有正式的规范。我指的是我正在测试的站点所期望的。例如,cdn.nitrome.com/games/rubbletroubletokyo/rubbletroubletokyo.swf有这样一个推荐人检查,如果请求与它认为无效的推荐人一起发送,例如app://foo.swf 甚至。如果没有发送推荐人,或者页面应该调用swf文件,那么它将发送正确的文件(http://www.nitrome.com/games/rubbletroubletokyo 在这种情况下)


该应用程序适用于儿童,包含一个web浏览器。只有授权的网站才被允许(无论是家长还是出版商),www.nitrome.com将是其中之一。当然,我必须确保在发布时计划的一切都能正常工作!我已经成功地为nitrome.com创建了一个黑客程序,但它非常具体。我们将不得不为我们遇到问题的每个网站创建黑客,那就是。。嗯,费时且难以维护

您无法从Flex应用程序更改HTTP\u Referer值。[]. 引述:

很遗憾,无法从AIR应用程序更改HTTP引用程序

提出了一种替代方案,其中包括设置一个排序;但是,这是否有效,这一问题仍然悬而未决


关于推荐人价值中的价值,海报似乎也有类似的挫折感。我想知道是否有人支持这是非标准的“推荐人行为”。我很惊讶任何网页工作都会失败,因为指定了推荐人值

由于没有办法搞乱推荐人,我们不得不对每个有问题的网站实施特定的黑客攻击(如果它是可黑客攻击的,那就另当别论了)

以下是我为www.nitrome.com游戏所做的

游戏页面的工作原理如下:在iframe中加载一个sfw广告,当广告完成(或用户单击skip)时,它会更改iframe内容,以便加载游戏swf

它因为引用而失败,但我可以在代码中找到(使用计时器…)正在更改的内容,找到游戏swf路径(regex),并强制帧contentWindow.location到swf路径


正如我所说的,这是一个黑客攻击,而且非常具体,但它的效果出人意料地好。

这段代码对我有效,我检查了Fidler中的标题。 有时,如果一些重定向发生在htmlLoader内部,您会得到一个类似“我认为这与使用window.location的一些javascript重定向有关,但我不确定,在这种情况下,您需要JS中的一些钩子来防止或解决它

var urlReq:URLRequest=new URLRequest(urlInput.text);
var headers:URLRequestHeader=new URLRequestHeader("Referer","test");
urlReq.requestHeaders=[];
urlReq.requestHeaders.push(headers);
browser.htmlLoader.load(urlReq);

在代码浏览器中有一个HTML对象

我知道,事实上这是我自己的问题!自定义沙盒不是一个切实可行的选择,这就是为什么我一直在寻找其他东西。是的,尽管依赖referer不是一个好主意,但确实有一些页面这样做了,并且无法在Flex应用程序中正确加载。基于我的有限研究“app://”语法似乎对AIR来说是不寻常的/独特的。但是,有很多合理的理由说明referer值不会为空;例如您从其他地方来到“SiteB”。我在Flextras网站上进行referer跟踪,以查看新访问者来自何处[以及他们是否注册];这些值中有一半不是空的。我预计任何依赖引用为空的网页要么实现不正确,要么试图实现某种安全机制以阻止用户查看该页面。是的,这也是我的猜测。我已经尝试过(使用Charles proxy)模拟特定站点的某些情况。当发送一个空白或有效的引用以加载某个swf文件时,它会通过。但是,它拒绝对无效(例如:app://)的访问@Exort您继续引用“有效”和“无效”“http_referer值中的值。您是否有有效/无效引用的来源?这类东西有正式的规范吗?没有,没有正式的规范,我指的是我正在测试的站点所期望的。例如,如果请求是与它认为无效的推荐人一起发送的,则具有这样的推荐人检查并将返回“拒绝访问”页面,例如app://foo.swf 甚至。如果没有发送推荐人,或者应该调用swf文件的页面(在本例中),它将发送正确的文件。编辑:StackOverflow自动删除所有http://on链接