我在 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 响应的服务(即我的健康检查路径),但我认为必须有一种更传统的方法。