反向代理Cookie域问题

时间:2020-02-13 19:04:07

标签: javascript api nginx cookies nginx-reverse-proxy

如果有人有任何见解,试图把这个问题都笼罩着,那真是太神奇了。

基本上,我有一个在本地主机上运行的PWA,并将请求发送到作为反向代理的api.domain.com。这似乎可以正常工作并返回正确的响应,但是,Set-Cookie正在从登录名运行,但使用api.domain.com的域,这意味着在刷新客户端后,本地主机不再能看到它。

map $http_origin $cors_origin_header {
    default "";
    "~(^|^http:\/\/)(localhost$|localhost:[0-9]{1,4}$)" "$http_origin";
    "https://test.domain.com" "$http_origin";
    "~(^|^http:\/\/)(mylocaldomain.com$|www.mylocaldomain.com:[0-9]{1,4}$)" "$http_origin";
}

map $http_origin $cors_cred {
    default "";
    "~(^|^http:\/\/)(localhost$|localhost:[0-9]{1,4}$)" "true";
    "https://test.domain.com" "true";
    "~(^|^http:\/\/)(mylocaldomain.com$|www.mylocaldomain.com:[0-9]{1,4}$)" "true";
}

log_format upstream_logging '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time ';

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name api.domain.co.uk;

    add_header 'Access-Control-Allow-Origin' $cors_origin_header always;
    add_header 'Access-Control-Allow-Credentials' $cors_cred;
    add_header 'Access-Control-Allow-Methods' "GET, POST, OPTIONS, HEAD";
    add_header 'Access-Control-Allow-Headers' "Authorization, Origin, X-Requested-With, Content-Type, Accept";

    location / {
        proxy_pass https://www.actualapidomain.com;
        access_log /var/log/nginx/api_logging.log upstream_logging;
    }

}

因此在localhost或www.localdomain.com上运行的应用程序将向api.domain.co.uk发送请求(这将反向代理www.actualapidomain.com)。

www.actualapidomain.com的响应包括一个set-cookie,该cookie似乎没有加入任何域,但是当它到达我的localhost应用程序时,该cookie会使用api.domain.co.uk的域进行设置它不会在以后的请求中使用。

我是否需要拦截并调整反向代理上的cookie,才能将域更改为所请求URL的域?如果是这样,我该怎么做?

-更新-

我尝试使用以下

将域添加到Set-Cookie中
proxy_cookie_path ~^(.+)$ "$1; domain=localhost";

但是它似乎在响应中显示了一条错误消息,“关于当前主机url,此set-cookie域属性无效”

预先感谢:)

0 个答案:

没有答案