我在使用GraphQL时遇到问题,返回给客户端时响应头被删除。我的应用程序使用NodeJS,Passport.js和Express Cookie-Session来管理身份验证和会话。
我有一个现有的/login
路由,该路由通过Passport进行身份验证,并向客户端返回user{}
对象和set-cookie
标头。结果,在客户端的浏览器上创建了一个cookie,并建立了他们的会话。
现在,我们最近添加了GraphQL,我创建了一个login
查询,该查询调用了现有的/login
路由并以user{}
对象作为响应。但是,当GraphQL将响应返回给客户端时,不再包含响应标头,因此将永远不会创建cookie。
如何通过GraphQL转发原始响应标头以到达客户端?
以下是GraphQL登录的示例:
login {
type: typeLogin,
args : { 'username/password here' },
async resolve(_, args, context) {
const response = await fetch('/login', {
credentials: 'include',
method: 'POST',
body: JSON.stringify('username/password here')
})
const data = await response.json();
// console.log(response.headers) will display correct headers
return data; // User is returned but response headers are not
}
}
答案 0 :(得分:0)
这就是我已经做到的方式,
让我知道这是否对您有用
致谢!