当前位置: 首页 > 知识库问答 >
问题:

如何使用 lambda 代理集成激活将 CORS 标头添加到 AWS API 网关响应

柯新翰
2023-03-14

我使用lambda作为AWS API网关和lambda代理集成的后端,并希望将CORS添加到响应头中。

根据文件:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

但是,您必须依赖后端来返回访问控制允许源标头,因为代理集成禁用了集成响应。

如何用Python在我的lambda函数中编程?

共有2个答案

公西俊能
2023-03-14

您需要将方法“选项”添加到您的api网关并使用代理lambda…返回

result.headers = { "Access-Control-Allow-Origin": "domain.com" }

因此,当浏览器首次向服务器调用选项时,它将返回 CORS 标头。

问题是,默认情况下,您的lambda方法将被“any”方法调用,因此您需要更改默认方法以获取、发布或任何您需要的内容

注意:您也可以使用相同的方法,如任何或选项、get、post,如果是选项调用,则只返回状态200和cors头。这取决于您是否为get、post等使用auth方法

Lambda控制台中有一个选项“启用CORS”,如果您只是使用没有任何奇怪的lambda

殷浩慨
2023-03-14

要创建选项方法,您可以从网关启用它

  1. 导航到您的网关,从左侧选择资源
  2. 选择endpoint,顶部会有一个按钮“操作”,在那里您需要选择“启用CORS”,保存设置。
  3. 部署网关。

它将在资源(endpoint)上创建方法选项

对于GET/POST其他HTTP谓词,您需要从代码中管理它,对于python

return {
    'statusCode': "200",
    'body': json.dumps({"test" : "123"}),
    'headers': {
        "Content-Type" : "application/json",
        "Access-Control-Allow-Origin" : "*",
        "Allow" : "GET, OPTIONS, POST",
        "Access-Control-Allow-Methods" : "GET, OPTIONS, POST",
        "Access-Control-Allow-Headers" : "*"
    }
}

对于其他未处理的情况,如集成超时 (504) 或代码中的错误 (502),您可以在 API 网关级别配置默认响应标头。请参阅默认响应标头:AWS API 网关,带代理集成

 类似资料:
  • 我正在尝试使用< code >传递一些自定义的HTTP头 我试过两种配置。第一个具有“< code > mapped-request-headers ”属性: 第二个具有“”属性,具有相对配置: 但在这两种情况下,远程应用程序加载的消息头如下: 没有我试图添加到请求消息中的“test”头的跟踪。 向 中? 事实上,标题似乎在GenericMessage中“消失”了: 我不明白为什么HTTP请求中会

  • 问题内容: 我已经开发了一个Restfull应用程序,我想添加另一个Web应用程序来使用其服务,因此我进行了以下Ajax调用: 我得到这个例外: 对象{readyState:0,状态:0,statusText:“ SyntaxError:无法执行’setRequestHeader’…-Origin: ‘不是有效的HTTP标头字段名称。”}错误DOMException:无法在’XMLHttpRequ

  • 问题内容: 我有一个Flask Web应用程序,它使用render_template如下,我需要在响应中添加一个Content-Security-Policy作为附加的HTTP响应标头。我尝试了以下方法,但都失败了,并给了我500。 1。 2。 这里有什么问题? 在终端上,以localhost:3001的身份访问Web应用程序时,我看到以下内容 127.0.0.1–[2015年4月6日01:45:

  • 问题内容: 我正在写一些演示Web服务器,提供静态html,css和javascript。服务器看起来像 我的客户端javascript使ajax调用到其他服务器。我该如何添加 对我的服务器响应,以便客户端javascript可以进行ajax调用? 问题答案: 自从Express宠坏了我以来,弄清楚这个问题有点麻烦。 看看enable cors。基本上,您需要做的是添加到要启用cors的域中。re

  • 我非常确定“Expires”是有效的HTTP响应头类型。但是当我尝试在代码中设置它时:(这是在ActionFilter.OnActionExecuted方法中) 我最后有一个例外: InvalidOperationException:错误使用的标头名称。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用,内容头与HttpContent对

  • 添加HTTP最简单的方法是什么。我的程序中的outboundGateway头? 我想做的是: 我首先对URL执行HTTP GET 然后我得到JSON 我提取session变量的值,并将其添加到下一个HTTP GET作为session头变量。 目前我有工作代码,但我想我可以做得更容易吗?我的实现 > 然后,该实现使用enrichHeaders方法将session变量添加到集成流消息头中 然后,该实现