我们正在使用一种硬件(chromecast),它似乎正在删除 cookie,但会很乐意传递自定义标头(我们从后端发出信号表示可以接受),我们想出了一个解决方法,将 cookie 数据填充到所述自定义标头中,然后将其放回到代理上的 cookie 标头中。这允许大多数客户端(遵守正常的 CORS 信号)和后端保持不变。在我的 Nginx 配置中,我目前有一个定义如下的映射:
map cookie $cookie {
default $http_cookie;
"" $http_my_token;
}
我稍后会按如下方式使用:
server {
listen 443 ssl;
#...
location /myurl {
proxy_pass http://nodeserver;
proxy_set_header X-Forwarded-For $remote_addr;
#...
proxy_set_header Cookie $cookie;
}
}
我希望此代码用“My-Token”标头中提供的值替换 Cookie 标头,但我看到的却是两个标头的值都未经更改地传递了。
答案1
您map
指定要检查的值是文字字符串cookie
。这不是您所说的,并且尝试检查文字字符串是毫无用处的,因为它只能是其本身。
第一个参数map
是要测试的值。您应该传递实际要检查的内容,而不是字符串cookie
。您似乎在寻找用户代理是否正在发送 cookie。如果是这种情况,您应该使用$http_cookie
。
map $http_cookie $cookie {