gpt4 book ai didi

amazon-web-services - 适用于OPTIONS的AWS API Gateway CORS正常,执行POST失败

转载 作者:行者123 更新时间:2023-12-04 04:58:50 25 4
gpt4 key购买 nike

我已经看过SO上的其他相关问题,但这似乎有所不同。
实际上,我的问题与this one非常相似,除了我没有400状态问题。

设置:

通过API网关的

  • lambda函数
  • 授权:无,需要API key :false
  • 部署到阶段:测试
  • 1个资源,1个POST方法集成了lambda。
  • 直接调用POST端点,例如使用curl总是返回200(有/无有效负载,不良有效负载等)-因此与所引用的问题不同。

  • 我使用了“启用CORS”选项-我尝试在资源和POST请求上都应用此选项(然后再部署API)。

    在API GW中,我可以在POST方法-方法响应区域下的200个响应标题中看到 Access-Control-Allow-Origin

    结果:从Chrome中的客户端代码调用端点,OPTIONS通过了,但由于缺少 Access-Control-Allow-Origin header 而导致POST失败。

    curl :OPTIONS调用
    curl -X OPTIONS -H "Access-Control-Request-Method: POST" \
    -H "Access-Control-Request-Headers: Content-Type" \
    -H "Origin: http://example.com" --verbose <endpoint>

    响应是:
    < HTTP/1.1 200 OK
    < Content-Type: application/json
    ...
    < Access-Control-Allow-Headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
    < Access-Control-Allow-Methods: POST,OPTIONS
    < Access-Control-Allow-Origin: *
    ...

    但使用POST:
    curl -X POST -d '{}' -H "Content-Type: application/json" \
    -H "Origin: http://example.com" --verbose <endpoint>

    它返回:
    < HTTP/1.1 200 OK
    < Content-Type: application/json
    ...

    和响应json主体-但没有 Access-任何 header 。

    我还能检查什么?

    最佳答案

    问题在于API网关已使用选中的"Lambda Proxy Integration"选项调用了我的lambda函数。

    我相信在将API网关触发器添加到新创建的lambda函数时,默认情况下会激活此功能。

    在“API网关-资源-方法” View 中,“集成响应”框显示为灰色,似乎没有办法(即使是Enable CORS功能)也无法在其中添加Access-Control-Allow-Origin header ,根据@Abhigna_Nagaraja的要求,该 header 是必需的。

    解决方案:
    如果使用“Lambda代理集成”,则将'Access-Control-Allow-Origin': '*' header 添加到您的lambda函数中。

    更好的是:在同一 View -集成请求中,关闭“Lambda代理集成”,然后再次启用CORS(随后进行部署)。

    (然后,在回调中,您只需要返回有效负载json而不是{ statusCode, headers, body }对象。)

    更新:

    如果您不确定是返回HTTP状态代码还是json负载中的请求响应状态信息,则可以进行一些有用的阅读:

    http status vs json status

    json status standards

    关于amazon-web-services - 适用于OPTIONS的AWS API Gateway CORS正常,执行POST失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149788/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com