要从您的 Vapor 应用程序返回二进制响应(例如 PDF 下载),您的 HTTP 响应应包含 X-Vapor-Base64-Encode
标头
return $response->withHeaders([
'X-Vapor-Base64-Encode' => 'True',
]);
Lambda 响应大小
Lambda 将响应限制为 6MB。如果您需要提供更大的文件,请考虑返回一个已签名的临时 S3 URL,您的用户可以使用该 URL 直接从 S3 下载文件。
要使用某些 OpenSSL 函数(例如 openssl_pkey_new),您必须创建一个 openssl.cnf
配置文件,并指示 Vapor 通过 OPENSSL_CONF
环境变量加载它。例如,此环境变量将指示 Vapor 从您的项目的根目录加载 openssl.cnf
文件
OPENSSL_CONF="/var/task/openssl.cnf"
下面提供了一个示例 openssl.cnf
文件
dir = certificates
[ ca ]
default_ca = CA_default
[ CA_default ]
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 36500
default_md = sha256
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match
[ policy_match ]
commonName = supplied
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
emailAddress = optional
[ req ]
default_bits = 2048
default_keyfile = priv.pem
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req
encyrpt_key = no
[ req_distinguished_name ]
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash
在典型的 Laravel 应用程序中,您可以调度将在 HTTP 响应发送到浏览器后执行的作业
Route::get('/', function () {
dispatch(function () {
Mail::to('[email protected]')->send(new WelcomeMessage);
})->afterResponse();
return view('home');
});
但是,我们建议您在使用 Vapor 时始终将作业调度到您的队列工作者。Vapor 无法在将响应发送到浏览器后执行作业;因此,尝试这样做会导致您的应用程序对最终用户来说显得更慢。