我创建单页应用程序(使用Angular)并部署到Lambda + APIGateway + S3以通过服务器端呈现(是SEO友好并使用Express.js)。 应用程序的基本功能,动态呈现DOM以及加载样式和路由,但图像(PNG,JPEG)不能正常加载,不包括SVG文件。
对加载图像的请求响应有200个状态代码,但图像为空且为0KB。
我该怎么办?
我尝试将*/*
添加到AWS APIGateway的二进制媒体类型,并确认在S3存储桶中存在图像。
答案 0 :(得分:3)
服务器上的代码(例如Node.js)拒绝二进制文件,所以修复它,然后它可以正常工作。
有关详情
首先,最重要的是设置接受二进制媒体类型。
我使用无服务器框架来部署此项目,但在部署时会更改二进制媒体类型,因此请使用“serverless-apigw-binary”npm包。
// serverless.yml
...
plugins:
- "serverless-apigw-binary"
custom:
apigwBinary:
types:
- "*/*"
...
还在项目入口点设置媒体类型。
// app.js
...
const awsServerlessExpress = require("aws-serverless-express");
const binaryMimeTypes = ["image/jpeg", "image/png", ...];
const server = awsServerlessExpress.createServer(app, undefined, binaryMimeTypes);
export const universal = (event, context) => {
awsServerlessExpress.proxy(server, event, context);
};