fetch send cookies 不成功
来源:13-5 PC端登录功能模块开发
qq_靛岚_0
2017-06-21
在实现登录模块的时候发现,登录成功之后不能拿到相应的session数据。
不过用postman, 后台是可以拿到session数据的。
后台是用nodejs和express。
app.use(require('cors')()); app.use('/', index); app.use('/graphql', graphqlHTTP (req => ({ schema, rootValue: { session: req.session } ,graphiql:true })));
前端react里的fetch试过credentials设置, 如果是same-origin后台接收不到cookies
let query = `?query={ user { addressList { userLastName userFirstName addressLine1 addressLine2 state city country zipCode } } }`; let myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); let myFetchOptions = { method: 'GET', credentials: 'same-origin' // mode: 'cors' }; fetch(URLS.devApiUrl + query, myFetchOptions).then(res => res.json()).then( json => { console.log(json); } );
后台报错是找不到session。
如果尝试跨域credentials 改成 include。直接报错。
let query = `?query={ user { addressList { userLastName userFirstName addressLine1 addressLine2 state city country zipCode } } }`; let myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); let myFetchOptions = { method: 'GET', credentials: 'include' // mode: 'cors' }; fetch(URLS.devApiUrl + query, myFetchOptions).then(res => res.json()).then( json => { console.log(json); } );
不知道怎么解决了,主要是postman好用啊,尝试使用ajax也是好用的。那应该就是fetch设置问题,中英文都搜索过了,也基本都尝试了,没找到可行的。
写回答
2回答
-
HTTP 是无状态的,也就是没有 session 的概念,session 的本质就是 cookie,需要自己实现。如 ASP.NET 等程序中的 session 都是框架实现好了的。
072017-06-22 -
Parry
2017-06-22
你这里的 session 就是一个值的名称吧?
00
相似问题