CORS 设置为允许所有但预检仍然失败

CORS 设置为允许所有但预检仍然失败

我在 Google Kubernetes Engine 中使用 Istio。我已向虚拟服务添加了允许所有来源的 CORS 策略。它看起来像这样:

  - match:
    - port: 443
    route:
    - destination:
        host: rev79-api-service
        port:
          number: 9000
    corsPolicy:
      allowOrigin:
        - '*'
      allowMethods:
        - POST
        - GET
        - OPTIONS
        - PUT
        - DELETE
      allowHeaders:
        - grpc-timeout
        - content-type
        - keep-alive
        - user-agent
        - cache-control
        - content-type
        - content-transfer-encoding
        - x-accept-content-transfer-encoding
        - x-accept-response-streaming
        - x-user-agent
        - x-grpc-web
      maxAge: 86400s
      exposeHeaders:
        - grpc-status
        - grpc-message
      allowCredentials: true

但是当我尝试从浏览器发出请求时出现此错误:

dev.rev79.app/:1 访问 XMLHttpRequest 'https://api.rev79.app/sil.rev79.Admin/ListNations' 来自起源 'https://dev.rev79.app' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。

我该怎么做才能避免这个 CORS 错误?

我正在考虑将所有带有方法的请求定向OPTIONS到仅提供 200 响应的服务(即我的健康检查路径),但我认为必须有一种更传统的方法。

相关内容