seafile onlyoffice k8s traefik Cross origin requests are only supported for protocol schemes

这个问题我实际上是用答案倒推寻找的原因

完整报错:

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 中相同的配置项,官方提供了各种 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 升级而来,可根据实际情况选择。

posted @ 2022-08-31 15:29  Saryta  阅读(111)  评论(0编辑  收藏  举报