关于 ajax http 请求的问题

2019-06-21 14:01:14 +08:00
 ukipoi

前端用 content-type application/json 类型请求报了 302 的错误.
看了下是被拦截然后重定向了。
拦截的原因是 session 里没有值,需要让他重新登录。
我跳过这次重定向发现前端请求了两次。
第一次 session 和 cookie 里什么值都没有,第二次就有 session 和 cookie。
请问这是拦截设置的有问题吗?

1292 次点击
所在节点    问与答
9 条回复
qq292382270
2019-06-21 14:05:43 +08:00
302 有没有可能是因为本来是 https,前端请求 http
ukipoi
2019-06-21 14:22:27 +08:00
@qq292382270
重定向是在 preHandle 里被拦截了,原因是 session 里获取不到登录信息。
这个和 https 有关系吗?
ukipoi
2019-06-21 14:32:31 +08:00
难道是 Method 是 OPTIONS 的请求本来就不会带 session 和 cookie 的信息吗?
我看到第一次请求 Method 是 OPTIONS,第二次是 POST
momocraft
2019-06-21 14:41:50 +08:00
请阅读跨域请求规范( CORS )和 ajax API (withCredentials)
ukipoi
2019-06-21 16:26:20 +08:00
@momocraft
那前端进行 preflight request 的时候被我后台拦截了,是属于正常的行为么?
而且那次拦截里,request 不包含任何的 session 和 cookie,请问这是正常情况么?
enjoyCoding
2019-06-21 16:41:16 +08:00
是正常的 option 请求只是浏览器先发个请求看看能不能跨域
http://www.ruanyifeng.com/blog/2016/04/cors.html
四、非简单请求 说的比较详细
ukipoi
2019-06-21 16:50:30 +08:00
@enjoyCoding
那也就是说我在拦截的时候应该判断 request 的请求方法是不是“ OPTIONS ”,如果是这个请求就跳过拦截?
enjoyCoding
2019-06-21 17:11:59 +08:00
@ukipoi 实际上后端不仅要判断 options 还有 get post 这种前端给你发的正常请求
w292614191
2019-06-22 08:33:56 +08:00
应该没登陆,session 无认证信息,然后你 ajax 请求,就被重定向了。
你在 preHandle 判断 session 无认证信息时,同时判断是否为 ajax 请求,如果是 ajax 就返回你定义的 xxx 状态码,前端在 complete 里面判断状态码为 xxx 时直接跳转到登录页。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX