这个问题我实际上是用答案倒推寻找的原因
完整报错:
has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, edge, https, chrome-untrusted.
找到了 github 上的一个相同问题 issue: DocumentServer,但是这里的解决方案是使用的 docker-compose,实际在 k8s 集群中,通过 traefik ingress/ingressroute 没办法直接用相同的操作解决。
于是找到了 traefik 中相同的配置项,官方提供了各种 middleware 配置项,经过测试 customRequestHeaders
就是我们需要的。
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: doc-server-traefik-headers
namespace: production
spec:
headers:
#accessControlAllowOriginList: //经过测试并不影响
#- "*"
customRequestHeaders:
X-Forwarded-Proto: "https"
然后在 ingress/ingressroute 中指定此 middleware 即可。
这个时候倒推一下,其实原因应该是请求的时候直接将 wss 作为协议转发了,然后被请求这端不直接支持 wss,于是有了上面的报错,我们在这里配置 X-Forwarded-Proto
也就是覆盖掉转发的来源协议,这样就解决了协议的问题。本身 wss 就是通过 https/http 升级而来,可根据实际情况选择。