4

尝试在 auth_request 调用中创建一个 cookie 并将其传递到下游以供立即使用。到目前为止,我能做到的最好的方法是在调用完成后在浏览器中设置 cookie:

auth_request /blah/blah;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $saved_set_cookie;

直到下一个请求,该 cookie 才会在下游可用。我总是可以通过执行以下操作来获取新的 cookie,但将它放在新的标头名称中并不理想:

auth_request_set $saved_cookie_try_2 $upstream_cookie_COOKIE_NAME;
proxy_set_header X-Fake-Cookie $saved_cookie_try_2;

这允许 cookie 值作为自定义标头立即可用,但不如仅拥有 cookie 方便。

有什么建议么?

更新1:

我能够添加到现有的 cookie 或将它们完全替换为:

proxy_set_header Cookie "$http_cookie; $saved_set_cookie";
or
proxy_set_header Cookie "$saved_set_cookie";

我无法想出一种方法来设置或只替换一个 cookie。

更新 2:

我可能可以使用 NGiNX 地图功能来完成这项任务:

map $http_cookie $auth_header {
  default "";
  "~*yourCookieName=(?<variable>[^;]+)" "the value you wanna set 
  $variable";
}

从这里:https ://stackoverflow.com/a/45208334/1502561

4

0 回答 0