今天小编遇到一个微信支付页需要post传递价格之类参数. 奇怪的是一个普通的post值死活传不过去!!后经百度发现大神在3年前的解释了,原来微信支付是有个中间服务器, post的数据是经过处理的再返回给我们指定的post页,这样就会去除了post的一手数据.太坑了!!!!!!折腾了二个多小时.
这个问题耗费了我们大量的时间去寻找原因,怀疑服务器,怀疑client都做了,最终通过抓包,分析出上面2个流程,B为正确的流程,A就是丢失form数据的流程,
在出错A图里面,client 在请求的时候都会把数据发送到QQ的代理服务器,这个服务的目的有很多,可能是....你懂的,也可能是CDN加速,然后QQ代理服务器反馈给client 805,这个是微信自己定义的http协议,返回这个的时候,它并未把我们正确的表单数据反馈给client,所以当下面向我们服务器发送数据时出现了问题,在我们服务器收到的form数据已经不正确了。
解决办法:
现在没找到良好的解决方案,我们可以使用一个比较间接的方式来解决它,就是给微信里面直接使用我们服务器的IP地址,不使用域名就可以了,这个处理和805错误有关系,不确定能完全解决。
这是某大神的原话. 无奈只好使用get提交post表单.