这个和网上广泛说的报错问题不一样, 遇到此类报错时, 我们刚开始以为是客户端的请求头出了问题, 结果并非如此, 其实是服务端返回的header信息有问题。
拿我们当前的项目举例。
经过排查, 我们发现在php后端脚本里, 有人用自带的header函数插入了这样一个诡异的头部信息:
header('charset=utf-8');
如果用浏览器访问, 是没有报错信息的。但是postman无法容忍这样的写法, 会报如下红字错误:
Parse error: invalid header token
为了解决这个错误, 必须在后端程序中将header函数参数内容改成:
header('Content-Type: text/html;charset=utf-8');
如果在swoole里, header需要在swoole返回信息对象调用header方法来插入, 代码如下
$response->header('Content-Type', 'text/html;charset=utf-8');
所以问题出在语法标准上。
其他语言的解决方案与此类似。