在一个项目中,接口返回的HTTP状态码是256,这个256之前从没有见过,于是就各种查询,但没有找到任何有用的信息。仔细检查代码才发现,原来是代码中写错了。

这不知道是哪个程序员偷懒使用了ThinkPHP的助手函数json(),传入了json_encode()函数的第二个值JSON_UNESCAPED_UNICODE,但ThinkPHP的助手函数json()的第二个值是HTTP状态码的意思。JSON_UNESCAPED_UNICODE常量被认为是HTTP状态码了强制转换成了256。由此可知JSON_UNESCAPED_UNICODE = 256。一个神奇的BUG。

//错误的代码
return json(['status' => true, 'msg' => '成功', 'data' => []], JSON_UNESCAPED_UNICODE);

//正确的代码
return json(['status' => true, 'msg' => '成功', 'data' => []]));

//或者使用json_encode()函数
return json_encode(['status' => true, 'msg' => '成功', 'data' => []], JSON_UNESCAPED_UNICODE);

希望可以帮你解决HTTP256状态码的问题。