springboot 处理请求的小分支-跳转 & cookie
首先是跳转,应该说设置状态,其中跳转是其中一个状态,
@RequestMapping(value = "request1", method = RequestMethod.GET)
public void request1(HttpServletRequest request, HttpServletResponse response) {
response.setStatus(HttpServletResponse.SC_OK);
}
200 状态就很简单,如果想做跳转可以使用 302 并设置 location
@RequestMapping(value = "request2", method = RequestMethod.GET)
public void request2(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("Location", "https://baidu.com");
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
}
这里如果设置了 302,但没设置跳转 location,就是 302 found
int SC_MOVED_TEMPORARILY = 302;
int SC_FOUND = 302;
而如果是 301 跳转,代表原地址不可用了,永久跳转
@RequestMapping(value = "request3", method = RequestMethod.GET)
public void request3(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("Location", "https://baidu.com");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
}
另一个问题是设置 cookie
@RequestMapping(value = "request4", method = RequestMethod.GET)
public void request4(HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = new Cookie("a", "b");
response.addCookie(cookie);
response.setStatus(HttpServletResponse.SC_OK);
}
这样的设置就能成功设定 cookie,而随着目前的浏览器 cookie 策略,如果要跳转后设置的话,估计是会越来越难,包括
response.addHeader("Set-Cookie", "a=b; domain=baidu.com; SameSite=none;Secure");
这样的方式也没法实现。