问题描述
前端调用后台接口获取验证码时,可以获取验证码,但输入验证码进行校验时,后端取不到session里面的数据。
问题描述图片
解决步骤
- 首先,我想到的是跨域问题,但是明显调用后端接口可以获取到验证码,排除;
- 然后,就很奇怪,开发环境里面没问题,为什么到线上就不行呢。直到我发现Cookies里面明显有问题,没有session。好了,问题找到了,用了nginx反向代理之后确实容易出这样的问题,当cookie_path与地址栏上的path不相符游览器就不会接受这个cookie,自然session就失效了;
- 最后修改nginx里面的配置文件
修改为
有了有了,session有了
总结
用nginx反向代理时要注意设置Cookie的路径,否则获取不到session就很尴尬了。
附上一个proxy_cookie_path设置方法的一个链接.