我正在从Laravel中的控制器方法返回一个数组。Laravel将此解释为我想发送JSON,这很好,但它没有设置Content-Llong
,而是使用Transtrans-Encode: chunked
。
我的响应很小,所以我不想将它们分块。如何禁用分块编码启用Content-Llong?
如果相关,我正在为服务器使用nginx。
在Laravel(5.8)中对我有效的唯一解决方案是添加一个标头,禁用Content-Encode
。问题是Nginx(10)被配置为使用gzip
压缩输出,它添加了Content-Encode: gzip
、Transtrans-Encode:chunked
并删除Content-Llong
标头。但是通过添加该标头,Nginx绕过了压缩,不会对标头进行这些更改。
$headers = [
"Content-Length" => strlen($responseJson),
"Content-Encoding" => "disabled",
];
我的解决方案是在响应中添加内容长度
标头,然后chunked-Transfer
将被替换
$responseJson = json_encode($response);
$headers = [
"Content-Length" => strlen($responseJson),
];
return response($responseJson, 200, $headers);
你可以和邮递员一起试试
对于JSON内容,只需在标题中添加内容类型
$headers = [
"Content-Length" => strlen($responseJson),
"Content-Type" => "application/json",
];