相关疑难解决方法(0)

API网关CORS:没有'Access-Control-Allow-Origin'标头

虽然已经通过API网关设置了CORS并且设置了Access-Control-Allow-Origin标头,但在尝试从Chrome中的AJAX调用API时仍然会收到以下错误:

XMLHttpRequest无法加载http://XXXXX.execute-api.us-west-2.amazonaws.com/beta/YYYYY.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.响应具有HTTP状态代码403.

我试图通过Postman获取URL ,它显示上面的标题已成功通过:

通过标题

并从OPTIONS响应:

响应标头

如何在不恢复JSON-P的情况下从浏览器调用我的API?

ajax amazon-web-services cors aws-api-gateway

67
推荐指数
9
解决办法
5万
查看次数

AWS API网关 - CORS + POST无法正常工作

CORS真的让我发疯,我真的没有想法让它变得有用.

我创建了一个简单的APIG Api,其中包含1个名为'abc'的资源,并添加了2个方法GETPOST,其中Authorization设置为NONE,API Key Required设置为false,所有内容都部署到名为'dev'的阶段.

当然,我在两种方法上都启用了CORS,我看到在OPTIONS方法和Access-Control-Allow-中添加了3个标题Access-Control-Allow-Origin,Access-Control-Allow-HeadersAccess-Control-Allow-Methods Origin添加到POSTGET方法中.

两个调用都映射到相同的lambda函数,该函数只是将"Hello from Lambda"文本输出到控制台.

然后我创建了一个简单的html页面,我在S3上作为静态网站托管,使用Route53指向一个域,并开始使用jQuery $ .ajax测试API 来进行调用.

一切看起来都很简单,直截了当,正如文档中所解释的那样,除了GET工作并按预期将文本输出到控制台.该POST版本导致以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access. The response had HTTP status code …

api amazon-web-services cors aws-api-gateway

20
推荐指数
6
解决办法
1万
查看次数

Cors - 如何处理需要自定义标头的预检选项请求?(AWS:使用 vpc 端点的私有 API 网关)

我看过有关此问题的帖子,但没有任何问题或答案与我的问题足够接近,无法提供有效的答案。

我无法通过浏览器向 API 发送请求。

据我了解,问题在于,当您向 API 网关发送请求时;浏览器将首先发送预检选项请求。此预检请求不会添加任何自定义标头,即:x-apigw-api-idheader. 这会导致返回 403,甚至没有命中选项请求。

我的理解是客户端无法控制预检请求,它由浏览器处理。

获取请求通过邮递员工作,选项请求也是如此,但前提是我x-apigw-api-id为每个请求添加标头。

通过邮递员返回的标头并x-apigw-api-id添加到请求

{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,OPTIONS","Access-Control-Allow-Headers":"Content-Type,X-Api-Key,","Content-Type":"application/json"}

我删除标题,得到一个403 forbidden.

这个问题有解决方法吗?发送选项请求时也许不需要 x-apigw-api-id ?

我在发帖之前查过的一些问题:

amazon-web-services amazon-vpc aws-api-gateway

6
推荐指数
1
解决办法
2208
查看次数