我正在构建一个应用程序Laravel 8
并将应用程序托管在AWS lambda
. 我想将响应压缩gzip
为 HTTP 请求。我与 AWS 支持进行了交互,他们要求我添加标头'Content-Encoding' => 'gzip',
并添加isBase64Encoded
到true
. 为了实现这一点,我尝试在互联网上找到解决方案,我找到了 Laravel Vapor 的文档,它完美地处理了这个问题。他们制作了一个中间件,添加了以下属性:
$response = $next($request);
if (in_array('gzip', $request->getEncodings()) && function_exists('gzencode')) {
$response->setContent(gzencode($response->getContent(), 9));
$response->headers->add([
'Content-Encoding' => 'gzip',
'X-Vapor-Base64-Encode' => 'True',
]);
}
return $response;
我当前的标题看起来像:
由于我没有使用 Laravel Vapor 所以我需要放入isBase64Encoded
标题:
我尝试通过以下方式执行此操作:
$response = $next($request);
if (in_array('gzip', $request->getEncodings()) && function_exists('gzencode')) {
$response->setContent(gzencode($response->getContent(), 9));
$response->headers->add([
'Content-Encoding' => 'gzip',
]);
$response->isBase64Encoded = true;
dd($response);
}
return $response;
如您所见,我正在尝试通过添加属性$response->isBase64Encoded = true;
,一旦实现标题更改为意外:
内容也未编码。帮我添加isBase64Encoded
属性作为响应