在iframe中的Flash获得了禁止使用NW.js的403

时间:2015-04-27 08:16:48

标签: flash proxy http-headers http-status-code-403 nw.js

我有一个nw.js应用程序,我在其中使用iframe标记来加载带有flash对象的外部页面。应用程序的所有流量都通过我写的TCP代理。我没有改变任何数据,只是做了一些监控。

var gui = require('nw.gui')
// set proxy to my tcp proxy server
gui.App.setProxyConfig('localhost:5050')

问题是,在请求游戏的.swf文件时,它会返回403 Forbidden错误并且游戏无法加载。

代理运行良好,当我在Chrome上使用它时,我可以加载游戏页面。在应用程序中,如果我没有设置代理,游戏加载正常。

我将.swf文件的HTTP请求与Chrome与nw.js进行了比较,它们在HTTP标头中存在一些差异。

在Chrome中

GET http://foo.bar/sth.swf HTTP/1.1
Host: foo.bar
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
X-Requested-With: ShockwaveFlash/17.0.0.134
Accept: */*
Referer: STH_VERY_LONG
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

在nw.js

GET http://foo.bar/sth.swf HTTP/1.1
Host: foo.bar
Proxy-Connection: keep-alive
Referer: STH_VERY_LONG
User-Agent: 
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,en-us;q=0.8,en;q=0.6

在nw.js中,它缺少AcceptX-Requested-With标头,User-Agent标头为空。其他标题都是一样的。

我尝试将nwUserAgent属性添加到iframe标记,如文档here所示,但User-Agent标题保持为空。

所以我想知道:

  • 为什么缺少2个标题
  • 如何让应用和代理协同工作

THX。

更新

已将问题精确定位到User-Agent标题。见this issue

0 个答案:

没有答案