-
使用koa2 和经过转化的koa-session(存在cookies里面)
-
前端的fetch请求是这样:
let user = { email: email, password: md5(password), }; let postData = { credential: “include”, headers: { “Content-Type”: “application/json” }, method: “POST”, body: JSON.stringify(user), }; fetch(’/users/login’,postData).then(function (res) { // console.log(‘res—’,res); return res.json(); }).then((json)=>{ // …code
- 然后路由的处理:
if (user) { if (user.password == data.password) { // 登录成功的后端操作 todo ctx.session.user = user; ctx.body = {msg:‘success’,token:user._id}; } else { // …code
- 然后日志是这样子:
POST /users/login session {} GET /home session {} GET / session { views: 21 } GET /stylesheets/style.css session { views: 22 } GET /images/loading.gif session { views: 22 } GET /build/dist/javascripts.bundle.js session { views: 23 } GET /home session {} POST /users/login session { views: 24 }
- 其中第一个POST和 GET /home都是fetch发起的请求 可以看出问题出在fetch上
当然可以换其他请求的方案,但是 我想知道为什么会这样 求各位大神指点
(之前在公司写react-native的时候一直使用fetch,觉得很好用 现在在react里面用,兼容性问题是肯定会出现的,不过这只是自己的一个小项目而已,为了探索新东西,而且现在fetch普通的数据收发都没什么问题,我觉得应该是没法设置读取和写入cookies的问题 但是不确定)
补充一下 Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials: ‘include’}) 然而我设置了这个似乎也没有用