正常情况下,一个Cookie的Domain必须满足当前网址的命名规则才能被该网站使用,而若在开发时项目是保存在本地,且是通过Nginx代理端口,则直接通过
request.getRequestURL()
获取到的路径是http://127.0.0.1:端口号
的形式,不能直接设置到Domain中去,故需要对相关的配置进行修改来达到获取到请求中的域名信息
要想达到上述效果,可以检查项目中以下两个位置:
- 1.Nginx配置文件。检查该文件是否添加了携带域名的配置,若缺失则需要加上
# 在路径映射的上方(即location的上方)添加上
proxy_set_header Host $host;
- 2.Zuul配置文件。
- 2.1.检查该文件是否添加了携带域名的配置,若缺失则需要加上,加上后后台就能取得请求的header信息
zuul:
add-host-header: true # 使Zuul在拦截请求时获取header信息
- 2.2.由于Zuul默认在返回响应时还会对部分敏感字段进行过滤,其中就包括了cookie和set-cookie,所以此时还需要更改敏感字段的默认配置
# 全局覆盖,冒号后不需要写东西
zuul:
sensitive-headers:
# 局部覆盖,其中“yourRouteName”代表指定路由名,冒号后不需要写东西
zuul:
routes:
yourRouteName:
custom-sensitive-headers: true # 开启用户自定义敏感headers过滤
sensitive-headers:
此时重启Nginx和Zuul,Cookie就会正常设置在浏览器中。
Ps:在Controller中,我们可以通过在方法参数区域中设置
@CookieValue("cookie名称") String 参数名
来获取指定的Cookie信息