Mic*_*oss 6 cookies apollo reactjs express-session graphql
我正在开发用户登录/注册功能,这是一个较大项目的一部分,并且正在localhost(Apollo服务器并响应apollo前端)上工作。我正在使用快速会话。
提交登录名时,我可以看到响应头中包含set-cookie,但未在Application-> Cookies中设置。
我尝试了不同的浏览器,使用createHttpLink,apollo-boost并使用include&same-origin(使用same-origin)。
我一直在尝试使它工作2星期,并且已经没有足够的尝试了,这是我的最后选择!我知道它确实很琐碎,但我看不到它。
如果我使用GraphqL Playground并更改设置以包括凭据,则可以看到其中设置了cookie。
服务器在localhost:8080 / graphql上运行客户端在localhost:3000上运行
客户:
const client = new ApolloClient({
link: new HttpLink({
uri: 'http://localhost:8080/graphql',
credentials: 'same-origin',
}),
cache: new InMemoryCache()
});
Run Code Online (Sandbox Code Playgroud)
科尔斯:
app.use(
cors({
origin: 'http://localhost:3000',
credentials: true
})
);
Run Code Online (Sandbox Code Playgroud)
快速会话:
app.use(
session({
name: "sess",
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: false,
maxAge: 1000 * 60 * 60 * 24 * 7,
},
})
);
Run Code Online (Sandbox Code Playgroud)
响应Cookie:
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Vary: Origin
Access-Control-Allow-Credentials: true
Content-Type: application/json
Content-Length: 69
set-cookie: sess=s%3AAZXnGb5BVc1aAOwH6zBNiT8mB6Ebf75k.in%2BPU1OvxymDPdPIZBf8%2FQzrRmM0S04tXFzXDwYCnk8; Path=/; Expires=Sat, 03 Nov 2018 13:59:57 GMT; HttpOnly
Date: Sat, 27 Oct 2018 13:59:57 GMT
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
该问题似乎是 CORS 配置之一。首先,更改HttpLink
为使用credentials: 'include'
;然后尝试这个 CORS 中间件:
app.use(
cors({
origin: 'http://localhost:3000',
credentials: true,
allowedHeaders: ['Content-Type', 'Authorization'],
})
);
Run Code Online (Sandbox Code Playgroud)
如果您仍然收到错误The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
,则表明 CORS 中间件设置不正确Access-Control-Allow-Origin: http://localhost:3000
(您的示例显示它正在返回*
,但我不确定这是否是复制/粘贴问题,因为cors
模块文档建议这应该可行。)
归档时间: |
|
查看次数: |
1705 次 |
最近记录: |