场景:
公司内网防火墙内,防火墙禁止了HTTPS,POST提交操作,允许GET提交,。
现象:
按照之前的文章 【Flex:AIR程序加上自动更新功能 AIR项目发布之在线无缝安装(Badge)详解 】
http://blog.csdn.net/huanghr_1/archive/2011/06/11/6538714.aspx,安装AIR程序,当系统没有安装AIR运行时时,ProductManager会去执行download运行时动作,问题就出现了:“下载出错。是否尝试重新下载?”如图1
(图1)
网上说出现此种现象的原因主要是浏览器的FlashPlayer插件的版本低于:10.0.22.87,升级FlashPlayer插件版本即可,以下是升级插件的地址,但我的问题在升级浏览器版本后依然存在。
http://www.adobe.com/software/flash/about/
尝试方法:
反编译无缝API的air.swf,expressinstall.swf,autoupdate.swf,从代码看不到有POST提交表单和HTTPS链接的地方,最可疑的是ProductManager.download 收集当前操作系统版本信息时使用了POST,无奈ProductManager是adobe.utils.ProductManager 是FP9/playerglobal.swc的一个类,需要反编译看看。
解决:
预期的结果应该是这样的,如图2,3:
问题没解决,公司内网只是部分用户,为了实现无缝安装AIR程序,只好在HTML页面做个提示,当出现“下载出错。是否尝试重新下载?”且FlashPlayer版本大于10.0.22.87时(查看版本:右击浏览器的任何一个Flash->关于,或者直接进入http://www.adobe.com/software/flash/about/ ),提示用户进入Adobe网站先安装运行时 http://get.adobe.com/cn/air/, 不直接提供本地下载地址的原因是
1)Adobe AIR协议声明分发需要额外授权,
2)官网可以自动检查当前操作系统版本并提供相应的下载页面。图