// 新手求解惑 使用fetch发起请求时,koa-session无法设置和访问
发布于 8 年前 作者 rulingfong 4480 次浏览 来自 问答
  • 使用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的问题 但是不确定)

1 回复

补充一下 Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials: ‘include’}) 然而我设置了这个似乎也没有用

回到顶部