Javascript 尝试使用Express设置cookie时,我做错了什么
我正在尝试在登录后将cookie发送回我的react应用程序, 在我的服务器中,我有一个测试响应:Javascript 尝试使用Express设置cookie时,我做错了什么,javascript,node.js,reactjs,express,cookies,Javascript,Node.js,Reactjs,Express,Cookies,我正在尝试在登录后将cookie发送回我的react应用程序, 在我的服务器中,我有一个测试响应: res.status(200).cookie('nameOfCookie', 'cookieValue', { maxAge: 1000* 60 * 60 }).end(); 在我的应用程序中 Axios.post('http://localhost:5000/User/login', userDetails).then(res => { console.log(JSON.stri
res.status(200).cookie('nameOfCookie', 'cookieValue', { maxAge: 1000* 60 * 60 }).end();
在我的应用程序中
Axios.post('http://localhost:5000/User/login', userDetails).then(res => {
console.log(JSON.stringify(res))
this.props.history.push('/list');
})
通过呼叫接收响应
{“数据”:“状态”:200,“状态文本”:“确定”,“标题”:{“内容长度”:“0”},“配置”:{“url”:“方法”:“发布”,“数据”:“{“电子邮件”:“a\”,“密码”:“a\”,“标题”:{“接受”:“应用程序/json,
文本/纯文本,
/,“内容类型”:“应用程序/json;字符集=utf-8”},“transformRequest”:[null],“transformResponse”:[null],“超时”:0,“xsrfCookieName”:“XSRF-TOKEN”,“xsrfHeaderName”:“X-XSRF-TOKEN”,“maxContentLength”:-1},“请求”:{}
但是没有饼干被设置,谁能告诉我这里的问题是什么?
谢谢-
我也有
app.use(cookieParser());
作为第一个应用程序使用,正如建议的那样,但这没有帮助,react应用程序无法设置cookie,因为后端应用程序运行在不同的端口上,因此存在跨域cookie问题 您必须在后端和
Axios
请求中设置以下标题,然后使用凭据设置:true
凭证:
要用于请求的请求凭据:省略
、同源
或包含
。若要自动发送当前域的Cookie,必须提供此选项。从铬50开始
在Axios中
withCredentials
指示是否应使用凭据发出跨站点访问控制请求默认值:withCredentials:false
示例:
res
.set("Access-Control-Allow-Origin", "http://localhost:3000")
.set("Access-Control-Allow-Credentials", "true")
.set("Access-Control-Allow-Methods", "GET, POST")
.set("Access-Control-Allow-Headers", "Content-Type, *")
.status(200).cookie('nameOfCookie', 'cookieValue', { maxAge: 1000 * 60 * 60 }).end();
我终于明白了: 事实证明,默认情况下Axios的“withCredentials”设置为false,因此我创建了一个带有覆盖的新实例,并使用了它
var myAxios = Axios.create ({
withCredentials: true
})
这还需要我更新cors以接受这些凭据
app.use(cors({credentials: true, origin: 'http://localhost:3000'}));
app.use(cors({credentials: true, origin: 'http://localhost:3000'}));