前端用 content-type application/json 类型请求报了 302 的错误.
看了下是被拦截然后重定向了。
拦截的原因是 session 里没有值,需要让他重新登录。
我跳过这次重定向发现前端请求了两次。
第一次 session 和 cookie 里什么值都没有,第二次就有 session 和 cookie。
请问这是拦截设置的有问题吗?
1
qq292382270 2019-06-21 14:05:43 +08:00
302 有没有可能是因为本来是 https,前端请求 http
|
2
ukipoi OP |
3
ukipoi OP 难道是 Method 是 OPTIONS 的请求本来就不会带 session 和 cookie 的信息吗?
我看到第一次请求 Method 是 OPTIONS,第二次是 POST |
4
momocraft 2019-06-21 14:41:50 +08:00
请阅读跨域请求规范( CORS )和 ajax API (withCredentials)
|
5
ukipoi OP @momocraft
那前端进行 preflight request 的时候被我后台拦截了,是属于正常的行为么? 而且那次拦截里,request 不包含任何的 session 和 cookie,请问这是正常情况么? |
6
enjoyCoding 2019-06-21 16:41:16 +08:00
|
7
ukipoi OP @enjoyCoding
那也就是说我在拦截的时候应该判断 request 的请求方法是不是“ OPTIONS ”,如果是这个请求就跳过拦截? |
8
enjoyCoding 2019-06-21 17:11:59 +08:00 1
@ukipoi 实际上后端不仅要判断 options 还有 get post 这种前端给你发的正常请求
|
9
w292614191 2019-06-22 08:33:56 +08:00
应该没登陆,session 无认证信息,然后你 ajax 请求,就被重定向了。
你在 preHandle 判断 session 无认证信息时,同时判断是否为 ajax 请求,如果是 ajax 就返回你定义的 xxx 状态码,前端在 complete 里面判断状态码为 xxx 时直接跳转到登录页。 |