amazon-web-services - Cors - 如何处理需要自定义 header 的预检选项请求? (AWS : private API gateway using a vpc endpoint)

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

我看过有关此的帖子,但没有任何问题或答案与我的问题密切匹配,无法提供有效的答案。

我无法通过浏览器向 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?

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

  • API Gateway CORS: no 'Access-Control-Allow-Origin' header
  • Can't use custom Request Headers on AWS API Gateway with CORS
  • request api gateway cors error
  • AWS API Gateway No 'Access-Control-Allow-Origin' header is present
  • AWS API Gateway endpoint gives CORS error when POST from static site on S3
  • 最佳答案

    此问题可以通过将 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/

    相关文章:

    amazon-web-services - AWS Lambda 函数可以通过 VPN 调用端点吗?

    amazon-web-services - ECS 容器无法访问数据库

    amazon-web-services - 通过 AWS Elastic Beanstalk 向 Windows Server 配置添加功能

    amazon-web-services - 如何在无服务器框架中将 iamRoleStatements 添加到 S3 触发器存储桶

    amazon-web-services - Cognito 凭证无权执行 Execute api

    node.js - 如何使用 aws-sdk 启用所需的 apiKey 为 true?

    amazon-web-services - AWS lambda 使用私有(private) Hostzone DNS 连接到内部 ELB

    mysql - Amazon AWS RDS MySQL - 实例和定价

    tomcat - AWS 服务器中的部署自动化

    amazon-web-services - 使用 AWS API Gateway 通过 AWS SES 发布电子邮件