You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Lambda与API Gateway调用API时遇Malformed Lambda proxy响应错误求排查

解决Malformed Lambda Proxy Response错误

我一眼就揪出问题啦——你的Access-Control-Allow-Origin响应头放错位置了!

当使用API Gateway的Lambda代理集成模式时,所有自定义响应头都必须嵌套在headers对象里,而不能和statusCodebody这些字段平级。API Gateway对代理响应的格式校验非常严格,这种字段层级错误直接就会触发"Malformed Lambda proxy response"报错。

给你修正后的代码,重点看headers部分的变化:

import json

def lambda_handler(event, context):
    # 这里替换成你从自有API获取的实际数据
    data = {"example_key": "example_value"}
    
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*'  # 把跨域头移到headers内部!
        },
        "isBase64Encoded": False,
        'body': json.dumps(data)
    }

顺便给你提几个后续要注意的细节,避免再踩同类坑:

  • isBase64Encoded必须是Python的布尔值(True/False,首字母大写),不能写成字符串形式
  • body必须是JSON字符串,一定要用json.dumps()把Python字典/列表转换成字符串格式
  • 如果需要添加其他跨域相关头(比如Access-Control-Allow-MethodsAccess-Control-Allow-Headers),全部都要放在headers对象里

内容的提问来源于stack exchange,提问作者ofek edut

火山引擎 最新活动