AWS API gateway api CORS错误处理方法

article/2025/11/1 14:11:19

我们开发了一个 AWS lambda 函数,然后我们使用 AWS API gateway服务将它上线。

我们已经测试 API 并验证它是否按照我们的预期工作,看起来真的很棒。

现在我们准备好将 API 端点发送到我们的前端并从网站调用它。

一旦我们这样做了,我们就发现了一些这样的 CORS 错误:

错误信息:
Access to XMLHttpRequest at ‘https://xxx.execute-api.us-east-1.amazonaws.com/prod/’ from origin ‘https://www.datasciencebyexample.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

CORS 错误代表跨域资源共享 (CORS) 错误。默认情况下,服务器端和 Web 端不能从不同的域通话。
所以我们需要从双方放宽这个要求。

在 AWS API 网关上启用 CORS

首先,在服务器端,我们需要确保来自服务器端的reaponser header,应具有包含“Access-Control-Allow-Origin”键的信息,以告知允许哪个domain调用 API。我们可以把特定的域值作为值,或者’*'代表所有站点都允许。请注意,此标头由 API 端提供,而不是从前端提供。

使用 AWS API 网关,可以在这里查看官方指南,
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html,或者只需按照以下步骤操作:

  1. 通过 https://console.aws.amazon.com/apigateway 登录 API Gateway 控制台。

  2. 在 API Gateway 控制台中,在 APIs 下选择一个 API。

  3. 在资源下选择一个资源。这将为资源上的所有方法启用 CORS。或者,您可以在资源下选择一种方法来仅为该方法启用 CORS。

  4. 从操作下拉菜单中选择启用 CORS。
    并选择启用 CORS

  5. 在启用 CORS 表单中,不需要更改任何内容,只需使用默认建议即可,基本上它们是:

    1. 在 Access-Control-Allow-Headers 输入字段中,输入客户端在实际请求资源时必须提交的以逗号分隔的标头列表的静态字符串。使用控制台提供的 Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token 标头列表或指定您自己的标头。

    2. 使用控制台提供的 ‘*’ 值作为 Access-Control-Allow-Origin 标头值以允许来自所有域的访问请求,或者为来自指定域的所有访问请求指定一个命名域。

    选择启用 CORS 并替换现有的 CORS 标头。

  6. 最后一点,记得重新部署API,否则可能不会生效。

这是上述步骤中描述的屏幕截图:
在这里插入图片描述

在这里插入图片描述

我们可以通过在 python 中使用 requests 库调用 API 来检查 CORS 设置是否有效,并从响应中打印出标头:

使用 javascript fetch 调用 API

在验证标头具有响应标头中的“Access-Control-Allow-Origin”键和值后,我们确定 CORS 已全部设置在服务器端。
在前端调用端点,我们不需要做太多的工作,只要找到你喜欢的方法。

下面是在 javascript 中使用 fetch 调用 POST 端点的示例:

function CORSexample(input) {// call api// POST request using fetch()fetch("https://xxx.execute-api.us-east-1.amazonaws.com/prod/", {method: "POST",// Adding body or contents to sendbody: JSON.stringify({"data":{"query":input}}),// Adding headers to the request if necessaryheaders: {"Content-type": "application/json; charset=UTF-8"}})// Converting result to JSON.then(response => response.json()).then(function(result){console.log(result)// in some oder jquery version, one has to parse the json to be object// it's not necessary in new versions, just try it or not//var result = $.parseJSON(result)// continue other custome stuff you have }}).catch(error => console.error('Error:', error)); }

英文链接

全栈程序员的最爱,AI好书必读

在这里插入图片描述
北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典


http://chatgpt.dhexx.cn/article/J6pJEPIO.shtml

相关文章

API管理的正确姿势--API Gateway

转载本文需注明出处:微信公众号EAWorld,违者必究。 数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离…

AWS——API Gateway

文章目录 APIHTTP API构建操作*路由*授权集成部署——阶段 REST API构建操作*资源*阶段授权方 自定义域名ACM证书?API 映射 VPC链接REST APIHTTP API子网?安全组? API 选择创建API的类型时,创建的是对公访问的gateway方式&#x…

使用AWS的API Gateway实现websocket

问题 最近业务上面需要使用到WebSocket长连接来解决某些业务场景。 一图胜千言 注意:这里承担WebSocket服务器的是AWS API Gateway;后面的EC2业务服务,其实都是REST接口服务。 这里主要关注API Gateway和REST业务服务怎么实现API Gateway要…

使用API Gateway

使用API Gateway 转自:http://www.open-open.com/lib/view/open1436089902667.html 它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 当你决定将应用作为一组微服务时,需要决定应用客户端…

aws api gateway 创建

在这个章节中,你将创建一个无服务器API。无服务器API让你专注于你的应用,而不是花时间配置和管理服务器。 首先,你使用AWS Lambda控制台创建一个Lambda函数。接下来,你使用API网关控制台创建一个HTTP API。然后,你调用…

微服务实践(二):使用API Gateway

【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 点击这里获取云原生干货 当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。…

AWS API GATEWAY的使用

AWS API GATEWAY 文章目录 1、Create Vpc endpoint2、Target Groups与Load Balancer2.1、Create target type为Instances的Target Groups2.2、Create Application Load Balancer2.3、Create target type为Application Load Balancer的Target Groups2.4、Create Network Load Ba…

API Gateway简介

Amazon API Gateway可以让开发人员创建、发布、维护、监控和保护任何规模的API。你可以创建能够访问 AWS、其他 Web 服务以及存储在 AWS 云中的数据的API。 API Gateway没有最低使用成本,我们用多少服务内容就花费多少。 比如在最新的A Cloud Guru的serverless 会…

API Gateway介绍

使用微服务架构开发应用后,每个微服务都将拥有自己的API,设计应用外部API的任务因客户端的多样性而变得更具有挑战性。不同客户端通常需要不同的数据。通常基于PC浏览器的用户界面显示的信息要远多于移动设备的用户界面。此外,不同的客户端通…

API 网关 ( API gateway )

前言 在 IOT ( 物联网 )中,当我们的一些设备。例如( 监控、传感器等 )需要将收集到的数据和信息进行汇总时,我们就需要一个 API 网关来接收从千百个终端发出的请求,它实现对外统一接口&#xf…

【学习笔记】API网关(GateWay)

项目场景 提示:这里可以添加本文要记录的大概内容: 微服务将一个大型工程转成了诺干个微服务,每个微服务都是一个独立的项目因此每一个项目都有不同的端口,那我们怎样在前端发送请求的时候能精确的发送到我们所需要的服务里。 提…

APIGateway简介

综合了一下网上的APIGateway教学,总结了一下(所有图片来源于网络): 目录 1.什么是APIGateway 2.APIGateway的作用 3.APIGateway的重要功能 1.什么是APIGateway APIGateway 即API网关是一个服务器,所有请求首先会经过这个网关…

java 中 ajax 的学习

1、原生 ajax 实现 首先在 web 工程下创建一个 .jsp 文件,用来与前台 ajax 进行数据传递 在创建的 .jsp 文件中->引入 jquery-1.8.3.min.js 文件(可直接粘贴至 web 目录下,也可新建一个 js 文件夹,然后粘贴进去) …

Java要学到什么程度?

在刚开始学习Java的同学都关心这么一个问题:到底把Java学到何种程度才能找到第一份工作呢?大部分人的目标是一致的,也比较现实,都是为了能找到像别人高薪的工作。那到底一个Java初学者要学多少Java知识,才能找到第一份…

学了python再学java要多久,有java基础学python要多久

python的学习难度如何,已经掌握java的话,想学习python批量处理文件的脚本,大概需要多长时间? 谷歌人工智能写作项目:小发猫 学会python大概要多久? 系统的学习,大概6个月就够了vue哪个版本支持…

自学Java开发一般需要多久?

自学Java开发一般需要多久?相信有很多想转行或者想学习Java的人都会关注这个问题!那我们今天就来说一下这个问题,具体需要多久呢?这个时间因人而异,毕竟每个人的学习能力和效率都是不同的! 打个比方&#x…

Java后端学习路线分享

Java后端学习路线?最近有些网友问我如何学习 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又…

老Java程序员谈谈swing要不要学

老Java程序员谈谈Swing要不要学 老java程序员谈谈要不要学swing Swing是什么? 1)AWT 在早期JDK1.0发布时,Sun公司就为GUI开发提供了一套基础类库,这套类库被称为AWT(Abstract Window Toolkit),即抽象窗口工具包。AWT…

学习Java一般多久?

学习Java一般多久?Java作为编程界应用最广泛的编程语言之一,另外Java开发薪资、工作环境、发展前景让大家都争先想进入Java开发工程师的行列。学习Java一般多久是Java初学者十分关心的问题,但是这些问题并没有一个明确的答案,毕竟…

史上最强 Java 学习路线图!

网上看到一首诗:“代码尽头谁为峰,一见秃头道成空。编程修真路破折,一步一劫渡飞升。”感觉还挺有意境的。 第一部分:Java 基础篇 这个阶段就是编程入门,掌握 Java 这门编程语言的基本语法,为后面的修行之…