我正在尝试使用 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
标头。
希望这有帮助。