grpc 服务器端流式处理失败(出现 subsequest CORS 错误)

Failure for grpc server side streaming (with subsequest CORS error)

提问人:nanakondor 提问时间:4/29/2021 最后编辑:sideshowbarkernanakondor 更新时间:4/29/2021 访问量:521

问:

我能够使用 grpc-web 实现一元调用,但服务器端流式处理无法按预期工作。 首次打开页面时,将调用 CreateStream 并按预期工作。“网络”选项卡如下所示:(有预检响应,但未显示在屏幕截图中)enter image description here

以下是 CreateStream 200 详细信息:enter image description here

大约 1 分 30-40 秒后,会出现以下错误:enter image description here

发生该错误时,将有另一个待处理的 CreateStream:enter image description here

我的 envoy.yaml 看起来像这样:

static_resources:
  listeners:
  - name: listener_0
    address: 
      socket_address: { address: 0.0.0.0, port_value: 30800 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          codec_type: auto
          stat_prefix: ingress_http
          stream_idle_timeout: 0s
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/auth." }
                route: 
                  cluster: auth_service
                  max_grpc_timeout: 0s
              - match: { prefix: "/name_of_service." }
                route: 
                  cluster: stream_service
                  timeout: 0s
                  max_grpc_timeout: 0s
              cors:
                allow_origin_string_match:
                - prefix: "*"
                allow_methods: GET, PUT, DELETE, POST, OPTIONS
                allow_headers: access-control-allow-origin,keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,access-token,token, authorize-token,x-site-type,x-origin,x-pin-token,grpc-timeout
                expose_headers: custom-header-1,grpc-status,grpc-message
          http_filters:
          - name: envoy.filters.http.grpc_web
          - name: envoy.filters.http.cors
          - name: envoy.filters.http.router

此错误始终每 1 分 30/40 秒发生一次。这意味着如果我不关闭页面,控制台中的红色错误消息会很多。 我也尝试过在客户端设置截止日期,但没有用。如何修复此CORS错误?我没有看 cloudflare,因为不知道要看什么,而且如果 cloudflare 是问题所在,为什么一元调用和第一个服务器流调用有效? 谢谢

流式处理 gRPC Cloudflare 截止日期

评论

0赞 sideshowbarker 4/29/2021
根本问题不是CORS错误,而是其他一些问题 - 一些故障阻止服务器发送/完成浏览器期望的响应。当您检查响应来自的服务器的服务器日志时,您发现那里记录了哪些相关消息?
0赞 nanakondor 5/16/2021
@sideshowbarker我检查了我的 grpc 服务和 envoy 日志,没有错误......grpc 服务也可以在本地运行,并且在 bloomrpc 中没有错误

答: 暂无答案