使用onethink 传图片遇到 uploadify httpError404
以前都正常,今天为何不行。于是开启uplaodify的debug选项{ ‘debug’ : true,},发现仍然只报 404错误,但没有具体有用信息。
难道是代码有问题?服务器有问题?一个个看,都看不出什么问题,折腾了1个多小时都不行。头大了,出去转了一圈,冷静了下,路上也思考了下,可以用wirshark抓包看下。
回来后用wirshark抓flash包 加上了过滤规则 ip.addr==192.168.3.211 ,我去没有仍然发现。
线上有个是正常的,不如去线抓下线上的包,上传是成功了,但没有任何请求上传的信息,到是有返回图片的包。奇怪了,难道不是用tcp,也不对啊,上面的过滤条件只限制ip不管任何协议的啊。wirshark都抓不到,难道这个上传包是直接飞过去不成?
只有去掉条件,用肉眼在茫茫的刷屏包中搜索了,如果是小图片,肯定是一闪而过,肉眼肯定不好发现。于是网上下了张大图片,然后再上传。我去,在上传的时刻真的出现了好多数据包,难道这就是uploadify在上传?于是停止抓包,分析下刚才抓到的信息。一看目标ip是: 23.106.xx.xx ,我去,这是啥?右击 follw TCP stream ,显示出这个ip的完整请求包,发现大小和原图片大小非常相似,很有可能就是那张大图片。
找到 http协议头信息结束符两个回车换行(rnrn) 16进制 0D 0A 0D 0A ,后面的应该就是图片的body了。
确实有,而且后面跟着(……)2E 2E 2E 2E 2E 2E ,这个就是multipart/form-data;格式里的boundary(分隔符)
可为什么要传到这个ip呢?难道这个flash组件先把图片放到自己服务器上,再传到我的服务器上?
二话不说,搜索下这个ip,看看有没有相关信息。百度一搜,显示是美国ip,难道uploadify服务器在美国,好像也对,这是老外写的东西。但一看,这ip是自己的代理服务器啊。我去,一看开启了翻墙。原来我firefox关掉了代理,但系统代理却设置了,uploadify默认使用系统网络,所以通过代理将数据包传过去了。但代理服务器转发到 http://localhost/upload.php,却无法访问,因为他找不到这个地址。
干掉代理,问题解决。
感觉被自己坑到了,无故浪费了这么多时间。不过也获取了经验,遇到问题时解决不了,可以出去冷静下,想想换个方式来解决问题。