API网关CORS问题

2023-11-24

因此,我通过 AWS Gateway 提供的基本设置启用了 CORS。然而,对于这个 API,我需要允许所有请求的控制源并允许凭据。

这是它的样子

enter image description here

您可能已经猜到的问题是 CORS 不允许此设置,您不能使用 Origin 通配符并将凭据设置为 true。通常,解决此问题的方法是获取请求域并将其添加到 Origin 标头中。这或多或少是我想做的。但我不知道如何获取该信息并将其添加为映射值。 API Gateway 在哪里存储该信息以及如何获取它?

更新: 我必须通过 HTTP 标头主机传递到我的 Lambda 函数(我应该在前面提到过),我已尝试实现下面的答案,但我无法使用提供的说明访问标头以将其传递到 Lambda 函数。如有任何更多帮助,我们将不胜感激。


好吧,经过几个小时的研究并在互联网上查找信息后,我找到了一个解决方案,希望它对其他人有用。

要传递不是 AWS API Gateway 提供的默认值的 HTTP 标头,然后通过 Lambda 函数访问该数据并在响应标头中返回该数据,请按照以下步骤操作

  1. 在“方法请求”中,转到“HTTP 请求标头”并添加要捕获的所需标头。 IE。如果我们想获取 API url 的主机值,您可以在此处输入“Host”。如果您想获取调用者的网站主机,请使用“Origin”

  2. 在“集成请求”中,如果“application/json”不存在,则转到映射模板并创建一个新模板,如果它只是更新它。

这是重要的部分,请传递您在步骤 1 中设置的标头值。为此,请在模板框中编写类似于以下内容的内容。

{
   "origin" : "$input.params().header.Origin",
   "host" : "$input.params().header.Host"
}

您还可以传入在同一 JSON 中定义的任何 url 参数。

  1. 从 Lambda 访问数据,如果使用 Node 作为 Lambda 后端代码,集成请求会将信息传递到“Event”参数中。要检索任何标头的值,只需在处理程序中使用以下内容即可。

    event.origin;
    
  2. 将响应从 Lambda 发送回 API Gateway 时,最好将响应格式化为 JSON。与此类似的东西。

    { 
       "origin" : event.origin,
       "host" : event.host,
       "nonHeaderOutput" : "Hello World"
    }
    
  3. 在“集成响应”中转到“标头映射”,如果您需要的标头未列出,您可以将其添加到“方法响应”中,然后它将出现在此处。对于此示例,我使用“Access-Control-Allow-Origin”并将映射值编辑为integration.response.body.origin

  4. 现在转到“映射模板”并选择要使用的内容类型,然后通过将其添加到模板框来编辑模板以访问非标头响应

    $input.path("$.nonHeaderOutput")
    

现在,发送到 API 的标头可以在您的方法 Response 中使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

API网关CORS问题 的相关文章

随机推荐

  • $(document).ready() 什么时候触发?

    评论来自这个问题让我思考一些事情 具体什么时候 document ready 功能火 显而易见的答案是 当文档准备好时 但具体是什么时候呢 例如 如果我在 PHP 继续执行时打开输出缓冲并刷新输出 这不会将输出发送到浏览器吗 那么 有什么方
  • “程序入口点...无法定位”在错误的 DLL 中

    我已经从 Haskell 代码创建了一个 DLL 并从 C 调用这个 DLL 当我在 Visual Studio 2010 中以调试模式运行时 我的应用程序工作正常 但是当我进行发布构建并安装它时 出现错误 无法在动态链接库 Advance
  • 在 ASP.Net 中,<%= 和 <%# 之间有什么区别[重复]

    这个问题在这里已经有答案了 在 ASP Net 中 有什么区别 and 看这个问题 什么时候应该在 ASP NET 控件中使用 和 这些答案的摘要 有几种不同的 蜂蜇
  • 通过字符串获取C#动态属性的值

    我想访问 a 的值dynamic带有字符串的 C 属性 dynamic d new value1 some value2 random value3 value 如果我只有 value2 作为字符串 如何获取 d value2 随机 的值
  • 颤动中的视频背景

    flutter 中可以一直播放背景视频吗 我正在寻找一些软件包并试图使其发挥作用 但我不知道如何 也许使用类似的东西 但带有视频 decoration new BoxDecoration image new DecorationImage
  • 使用 MongoDB Driver Java API 将 BSON 转换为 JSON

    我正在使用 MongoDB Driver Java API 将 BSON 转换为 JSON 我有这样的测试代码 String input timestamp 1486064586641 org bson Document doc org b
  • 如何配置 WEBrick 以通过 HTTPS 使用中间证书?

    我目前在 Rails 应用程序中使用以下选项来通过 WEBrick 启用 HTTPS Port gt 3000 environment gt ENV RAILS ENV development dup daemonize gt false
  • Edittext达到最大edittext长度后跳转到下一个edittext

    在我的布局中 我有 4 个编辑文本 达到最大长度后 我需要跳转到下一个编辑文本 但是有一个问题 怎么做 请任何人帮助我做到这一点 达到计数后 您将编辑文本的焦点更改为下一个 Edittext edt1 Edittext edt2 mount
  • CheckBoxList多选:模型绑定回困难

    我正在上课如下 public class UserRoleModel public string Role get set public bool UserRole get set and public UserRoleModel User
  • Android Firebase 云消息传递(FCM):subscribeToTopic 会自动重试吗?

    要在 Android 客户端中订阅主题 我们应该调用 FirebaseMessaging getInstance subscribeToTopic news 我想知道如果执行此指令时互联网连接不可用 会发生什么情况 当互联网连接可用时 谷歌
  • C# - 我应该使用静态数据库连接吗

    在我连接到 Orace 数据库的应用程序中 我总是创建一个新连接 打开它 执行 OracleCommands 最后关闭它 最近我认为实现静态连接会是一个更好的主意 假设我有一个可以从任何地方访问的静态连接 每次我需要连接到数据库时 我都可以
  • 生成给定范围之间的奇数随机数

    如何生成给定范围内的奇数随机数 例如 对于 1 到 6 之间的范围 随机数为 3 或 1 或 5 生成随机数的方法 Random No Min int Math Random Max Min 1 Refer 如何在Java中生成特定范围内的
  • Google Places API 类型功能..

  • 如何使用 PDO 在 MySQL 中存储 BIGINT?

    我知道这个问题在这里被问过不止一次 但我找不到解决方案 我们正在使用一个数据库 将 facebook id 存储为 BIGINT 20 create table users fb id bigint 20 NOT NULL user nam
  • 如何更新绘图表达树形图以同时具有标签和绘图内的值?

    目前 plotly express 树形图仅显示树形图中的标签 如何在标签旁边包含该值 这就是为什么我不喜欢 Express 它有太多限制 要进行这些更改 您必须以任何一种方式访问 跟踪 从我的角度来看 使用普通的绘图更好 代码更透明 话虽
  • 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件?

    Delphi 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件 http edn embarcadero com article 27842文章介绍了如何使用 CHM 文件 我执行了那里描述的所有步骤 Added co
  • 如何更改 Android WebView 中的 FontSize?

    如何手动更改网页视图的字体大小 例如当页面在 web 视图中加载时 字体大小约为 24pt 对于我的安卓屏幕来说太大了 我查看了 网络设置 但似乎两者不相关 Thanks 我终于找到了 WebSettings webSettings web
  • 反斜杠 - 正则表达式 - Javascript

    我想构建一个 JS 函数 将参数列表连接到有效路径 因为我无法确定路径的一部分是否带有斜杠 这是函数 concatPath function var path for var i 0 i lt arguments length i path
  • 使用 Pear Mail 发送邮件的 PHP 脚本有什么问题?

    我有这个脚本 require once Mail php from Stephen lt email protected gt Google apps domain to email protected subject Hi body Hi
  • API网关CORS问题

    因此 我通过 AWS Gateway 提供的基本设置启用了 CORS 然而 对于这个 API 我需要允许所有请求的控制源并允许凭据 这是它的样子 您可能已经猜到的问题是 CORS 不允许此设置 您不能使用 Origin 通配符并将凭据设置为