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