IIS + EasyWeChat 出现“EasyWeChat.DEBUG: Request received:”
运行 EasyWeChat 的 demo 代码出现:
[2020-08-29 10:27:23] EasyWeChat.DEBUG: Request received: {"method":"GET","uri":"http://xxx.com/xxx/index.php/","content-type":null,"content":""} [] [2020-08-29 10:27:23] EasyWeChat.DEBUG: Server response created: {"content":"success"} []
直接输出了debug日志,反而真正要输出的 success 没有。
之前在别的项目用过EasyWeChat没有这个问题,最近一个新项目出现了这个问题。
新项目没有用框架,而且是IIS服务器;
后来在github找到了这个issue:
https://github.com/overtrue/wechat/issues/1490
按照issue的说法 增加了 log 配置项,结果出现如下报错:
This page contains the following errors:
error on line 1 at column 1: Document is emptyBelow is a rendering of the page up to the first error.
这报错风格和内容我是万没想到这是浏览器的报错,不是服务端的。。。
而在开发者工具里面看到的响应是正确的:
而浏览器报错的原因是服务端响应的 Content-Type 是 application/xml
但是响应的内容显然不是xml 所以浏览器报错了。
但是经测试,这并不影响微信服务器的验证。
这里面跟IIS有关的部分是,源码的 send 方法里面有个判断:
这块是处理缓冲区输出的
fastcgi_finish_request 是针对 nginx 的,而 IIS 就走了elseif
而 closeOutputBuffers 里面是用 ob_ 系列函数来处理缓冲区数据,并且实现逻辑较复杂,而且开启了缓冲区也就没有办法用传统的打印输出的方式进行调试,所以我也再没深究这块代码,也就不确定这是故意设计的还是一个bug。。。
赞 (0)