回答
收藏
分享
举报
使用auth_request时 丢失cookie的问题
提问于2021-05-18 19:42

浏览 4.2k

文章标签

使用auth_request拦截了请求,去后台校验一下用户登录情况,然后添加一个cookie,再继续请求目标地址。但是请求地址页面得不到cookie。
如果使用的是相同域名地址和路径,就能得到cookie,但是拦截了不同域名和地址的请求,验证后就得不到cookie了,实在不知道怎么配置了,大神帮忙分析一下该怎么改呢?
下面是简单的配置信息:
server {
listen 8080;
server_name domain.vip.net;

location @error401 {
return 302 /ssoproxy/login;
}
location /app/v2/dataOverview {
auth_request /ssoproxy/check/;
error_page 401 = @error401;
proxy_pass http://192.168.1.190:2100/app/v2/dataOverview;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Cookie $http_cookie;
#proxy_cookie_path / /;
#proxy_pass_header Set-Cookie;
proxy_cookie_domain domain.vip.net 192.168.1.190;
}
location = /ssoproxy/check/ {
internal;
proxy_set_header Host $host;
proxy_set_header Content-Length "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Cookie $http_cookie;
proxy_pass_header Set-Cookie;
proxy_pass_request_body off;
proxy_pass http://domain.vip.net:7100/ssoproxy/check/;
}


java后台代码写一个cookie到返回中

@RestController
public class AuthController {

@RequestMapping("/check")
public void check(HttpServletResponse response) {
Cookie cookie = new Cookie("user_login", "ok");
cookie.setMaxAge(86000);
cookie.setPath("/");
response.addCookie(cookie);
return;
}
}





已修改于2023-03-15 22:20



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

我猜你遇到的不同域名的问题应该是这个机制导致的:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_where_cookies_are_sent

浏览器发送cookie只会发送在同一个domain下的

赞同

0

回复举报

回答于2021-08-24 16:23



回复friparia
回复
提问者
perliu
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

如果是三次握手没有成功,需要在nginx及上游,分别用tcpdump/wireshark抓包看下,是SYN还是ACK报文丢失了,是在哪个节点丢失的,再来分析为何会丢失,又该如何恢复。

wireshark抓包参见我讲的这一课:https://time.geekbang.org/course/detail/100026801-100973

tcpdump抓包参见这里:https://time.geekbang.org/course/detail/100026801-118169

点赞 0
浏览 5.6k

周期性任务 可以通过 event和 ngx_add_timer 的方式实现。

具体还在研究,等有示例程序贴上来。


点赞 0
浏览 3.5k