如果有人有任何见解,试图把这个问题都笼罩着,那真是太神奇了。
基本上,我有一个在本地主机上运行的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域属性无效”
预先感谢:)