Cookie 未添加到请求中 header
Cookie not added into request header
想再问一个CORS cookie的问题,我花了好长时间没解决。
情况是这样的。
我在 nodejs(http://localhost:5000), and a React Frontend app(http://localhost:3000) 中有一个后端 api。
Backend端的Cors设置是这样的
private initializeCors(){
this.app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Headers", "Content-Type, Accept");
res.header("Access-Control-Allow-Credentials", "true");
next();
});
}
我在使用 username/password 登录时在 Fetch Api 中设置了 { credentials: "include" }
。
Set-Cookie 已响应设置,我可以看到它已保存在浏览器中。
Cookie 的格式为 "Authorize=TOKEN;HttpOnly;Max-Age=3600;"
Cookie in browser
然后当路由到另一个 url 并且它无法从后端检索数据并出现 401 异常。
这是序列调用的代码。
const credentialsInclude : "include" | "omit" | "same-origin" | undefined = "include";
function getAllPayments() {
const requestOptions = {
method: 'GET',
credentials: credentialsInclude
};
return fetch(apiUrls.GET_ALL_PAYMENTS, requestOptions).then(handleResponse);
}
我可以看到未添加到 header 中的 cookie。
No cookie in header
我已按照 的最佳答案进行操作,但无法正常工作。
有什么建议吗?谢谢。
我刚刚弄明白了。该问题不是由 CORS 设置引起的。这是Cookie本身造成的。
对于我的情况,我需要将 Path=/;
添加到 Set-Cookie
中以响应 headers。这样就可以在成功登录后将来自响应的cookie添加到顺序请求中。
想再问一个CORS cookie的问题,我花了好长时间没解决。 情况是这样的。
我在 nodejs(http://localhost:5000), and a React Frontend app(http://localhost:3000) 中有一个后端 api。 Backend端的Cors设置是这样的
private initializeCors(){
this.app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Headers", "Content-Type, Accept");
res.header("Access-Control-Allow-Credentials", "true");
next();
});
}
我在使用 username/password 登录时在 Fetch Api 中设置了 { credentials: "include" }
。
Set-Cookie 已响应设置,我可以看到它已保存在浏览器中。
Cookie 的格式为 "Authorize=TOKEN;HttpOnly;Max-Age=3600;"
Cookie in browser
然后当路由到另一个 url 并且它无法从后端检索数据并出现 401 异常。 这是序列调用的代码。
const credentialsInclude : "include" | "omit" | "same-origin" | undefined = "include";
function getAllPayments() {
const requestOptions = {
method: 'GET',
credentials: credentialsInclude
};
return fetch(apiUrls.GET_ALL_PAYMENTS, requestOptions).then(handleResponse);
}
我可以看到未添加到 header 中的 cookie。 No cookie in header
我已按照
有什么建议吗?谢谢。
我刚刚弄明白了。该问题不是由 CORS 设置引起的。这是Cookie本身造成的。
对于我的情况,我需要将 Path=/;
添加到 Set-Cookie
中以响应 headers。这样就可以在成功登录后将来自响应的cookie添加到顺序请求中。