Cloud API Gateway 不允许使用 CORS

Cloud API Gateway doesn't allow with CORS

提问人:gotiredofcoding 提问时间:5/1/2022 最后编辑:Hack-Rgotiredofcoding 更新时间:8/3/2023 访问量:1593

问:

我有连接到 的 Cloud Gateway API。 它适用于我生成的 API 密钥,但是当我将密钥限制为仅启用对我的特定域的访问时 - ,我开始在客户端上收到 CORS 错误。(它不受域限制)Cloud Functionexample.com

所以我在控制台的文件中启用了 CORS,文件没有错误,但是当我使用密钥从我的域访问 API URL 时,我仍然收到 CORS 错误:config

https://project-xxxx.uc.gateway.dev/search?key=AIxxxxxxxxx

配置:

swagger: "2.0"
info:
  title: projectapi
  description: "data api"
  version: "1.0.0"
schemes:
  - "https"
host: "project-xxxxxxxx.apigateway.xxxxx-xxxxx.cloud.goog"
x-google-endpoints:
- name: "project-xxxxxxxx.apigateway.xxxxx-xxxxx.cloud.goog"
  allowCors: True  
paths:
  "/search":
    get:
      description: "data"
      operationId: "project"
      x-google-backend:
        address: https://us-central1-projectName.cloudfunctions.net/search
      security:
        - api_key: [key]
      responses:
        200:
          description: "Success."
          schema:
            type: string
        400:
          description: "Invalid"

securityDefinitions:
 api_key:
    type: "apiKey"
    name: "key"
    in: "query" 

My Cloud Function 确实允许 CORS,如果使用密钥中的链接直接调用,则效果很好。address

为什么此配置不允许网关的 CORS?

函数 谷歌云 API网关

评论


答:

0赞 gotiredofcoding 5/1/2022 #1

解决! 您不仅必须为您的域名启用密钥,还必须从列表中为您的特定 API 名称启用密钥,请转到APIs & Services => Credentials => API keys => your key => API restrictions => choose your API name from the list !

这允许从特定域访问函数 - 而无需使用 Balancer。