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
相似问题