AWS API 网关将内容类型标头添加到选项请求



我正在尝试使用 Lambda 和 AWS 网关编写一个 OPTIONS 请求来响应发布请求 - 此代码来自 AWS 文档:

exports.handler = function(event, context) {
var responseCode = 200;
var response = {
statusCode: responseCode,
headers: {
"Access-Control-Allow-Origin": "*"
}
};
context.succeed(response);
};

当我在 AWS Lambda 中对其进行测试时,它会提供正确的响应

Response:
{
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*"
}
}

但是,当我尝试使用 AWS API 网关运行它时, 它添加不属于响应的内容类型标头。 结果,当我尝试发出发布请求时,我收到错误"预检响应中不允许输入内容类型"。 知道问题可能是什么吗?

如果你运行以下命令,

curl -H "origin: example.com" -v "https://h64hstwg05.execute-api.us-east-1.amazonaws.com/default/optionsrequest"

它返回content-type: application/json. 这是因为未指定时application/json是默认值。

这是来自 AWS 文档的。

当请求中缺少内容类型标头时,API 网关假定其默认值为应用程序/json

参考: https://docs.amazonaws.cn/en_us/apigateway/latest/developerguide/request-response-data-mappings.html

您始终可以从 lambda 覆盖并返回不同的content-type标头。

希望这有帮助。

最新更新