我看过有关此的帖子,但没有任何问题或答案与我的问题密切匹配,无法提供有效的答案。
我无法通过浏览器向 API 发送请求。
据我了解,问题是当您向 API 网关发送请求时;浏览器将首先发送预检选项请求。此预检请求不会添加任何自定义 header ,即:x-apigw-api-id
标题。然后这会导致 403 被返回,甚至没有点击选项请求。
我的理解是客户端无法控制预检请求,它由浏览器处理。
获取请求通过 postman 工作,选项请求也是如此,但前提是我添加了 x-apigw-api-id
每个请求的 header 。
邮件头通过 postman 返回 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?
我在发帖之前查了一些问题:
最佳答案
此问题可以通过将 VPC 端点关联到您的私有(private) API 来解决。这将为您的私有(private) API 生成一个 Route53 别名。从文档中,
When you associate a VPC endpoint with your private API, API Gateway generates a new Route53 ALIAS DNS record which you can use to invoke your private APIs just as you do your edge-optimized or regional APIs without overriding a Host header or passing an x-apigw-api-id header.
https://docs.aws.amazon.com/apigateway/latest/developerguide/associate-private-api-with-vpc-endpoint.html
关于amazon-web-services - Cors - 如何处理需要自定义 header 的预检选项请求? (AWS : private API gateway using a vpc endpoint),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57819119/