要解决Anthos Service Mesh/Istio未启用CORS的问题,您可以通过以下方法进行配置:
cors-policy.yaml
的YAML文件,并添加以下内容:apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: enable-cors
namespace:
spec:
workloadSelector:
labels:
app:
configPatches:
- applyTo: HTTP_FILTER
match:
context: SIDECAR_OUTBOUND
listener:
filterChain:
filter:
name: envoy.http_connection_manager
subFilter:
name: envoy.router
patch:
operation: INSERT_BEFORE
value:
name: envoy.cors
typed_config:
"@type": type.googleapis.com/envoy.config.filter.http.cors.v2.Cors
allow_origin:
- "*"
allow_methods:
- GET
- POST
- PUT
- DELETE
allow_headers:
- "*"
expose_headers:
- "*"
max_age: "1728000"
请注意,您需要将
替换为您的命名空间,并将
替换为您的应用程序标签。
kubectl apply -f cors-policy.yaml
kubectl get envoyfilter -n
您应该能够看到名为enable-cors
的EnvoyFilter对象。
这样,Anthos Service Mesh/Istio将启用CORS,并允许所有来源的GET、POST、PUT和DELETE方法。此配置还允许所有的请求头和响应头,并设置了一个最大缓存时间为1728000秒(20天)。
请注意,这只是一个示例配置,您可以根据自己的需求进行调整。