2

我正在构建一个应用程序Laravel 8并将应用程序托管在AWS lambda. 我想将响应压缩gzip为 HTTP 请求。我与 AWS 支持进行了交互,他们要求我添加标头'Content-Encoding' => 'gzip',并添加isBase64Encodedtrue. 为了实现这一点,我尝试在互联网上找到解决方案,我找到了 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属性作为响应

4

0 回答 0