如何在 deno websocket 中设置 cookie

问题描述 投票:0回答:1

如何在 websocket 连接中设置 cookie?我想这样做是因为我正在使用 nginx 入口会话亲和力将用户会话与特定 pod 关联起来。但这个请求是在无服务器函数(即 deno)中发出的。我已阅读以下内容:

但不幸的是,所提出的解决方案似乎对我不起作用。具体来说,在 url 参数中设置关联令牌或由浏览器自动设置。有关更多上下文,这是我的代码中进行此调用的部分:

const wsUrl = `wss://${this.username}:${this.password}@${this.host}/api/${this.id}`
this.logger.info(`Connecting to WebSocket URL: ${wsUrl}`);
this._ws = new StandardWebSocketClient(wsUrl);

相关入口控制器的配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-kernel-gateway
  namespace: default
  annotations:
    cert-manager.io/issuer: letsencrypt-nginx
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - wovenmind'
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "cookie-affinity"
    nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
    nginx.ingress.kubernetes.io/affinity-mode: persistent
spec:
  rules:
    - host: host.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service
                port:
                  number: 8888
  ingressClassName: nginx
  tls:
  - hosts:
    - host.com
    secretName: letsencrypt-private-key

问题是,似乎没有办法配置入口容器以使用参数中的亲和力令牌,并且没有办法(据我所知)自动/全局设置标头,就像您可能看到的那样在浏览器中。

我是否弄错了,或者在 deno 中无法通过 websocket 连接传递 cookie?

nginx websocket digital-ocean kubernetes-ingress deno
1个回答
0
投票

我还没有实现这个,但是下面的库似乎很有前途。如果我不编辑这个答案,那可能意味着它对我有用。 https://deno.land/x/[电子邮件受保护]

© www.soinside.com 2019 - 2024. All rights reserved.