微信公众号开发踩坑记录

 最近在针对微信公众号做一些接口的开发,开发完成后发布到服务器上的时候,却发现用公司的线上的服务器地址,去配置微信的URL(服务器地址)一直提示"token验证失败"。由于之前在本地日常环境开发时一直是正常的,放到线上却不行,还一度以为是微信那边屏蔽了我们服务器的地址。
      后来反复研究,终于从阿里云的一个帖子中获得重要信息(http://bbs.aliyun.com/read/153115.html):

六. 如何关闭 Transfer-Encoding,微信开发等场景
<?php
//$a = '123';  
$a = $_GET["echostr"];
header('Content-Type: application/octet-stream'); // 不要用默认的 text/html, 如果你不知道你输出的类型请用 application/octet-stream
header('Content-Length: '. strlen($a));
echo $a;
 

  

 就是这句Content-Type: application/octet-stream,解决了我在本地环境下验证通过,服务器上却通不过微信的token验证的麻烦。原因好像是微信那边不接受Transfer-Encoding: chunked的http通信。而这个问题貌似普遍存在于公司服务器和阿里云ACE服务器上(貌似好多阿里云的ACE用户都中招了-.-!),反正最后还是靠阿里云的一个FAQ解决了。

posted @ 2016-05-10 10:21  系统攻城狮  阅读(625)  评论(0编辑  收藏  举报