X-XSRF-TOKEN header 使用 axios
X-XSRF-TOKEN header with axios
如果我设置 XSRF-TOKEN
cookie 服务器端,是否必须设置任何内容才能发送 X-XSRF-TOKEN
header?
https://github.com/axios/axios/blob/master/lib/defaults.js#L74
https://github.com/axios/axios/blob/master/dist/axios.js#L1072
看起来好像我没有,但我没有看到有人出去。
我要补充一点,我已将 withCredentials
设置为 true,所以我确实遇到了 OR 中的第一个检查:
var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
cookies.read(config.xsrfCookieName) :
undefined;
if (xsrfValue) {
requestHeaders[config.xsrfHeaderName] = xsrfValue;
}
所以如果 config.xsrfCookieName
是默认值......
更新:
所以,我的 OPTIONS
预检 CORS
正在工作,现在 POST
也是,但是没有 X-XSRF-TOKEN
被发送。
methods: {
onSubmit(e) {
this.axios
.post(
e.target.action,
{ data: this.form },
{
withCredentials: true,
xsrfCookieName: "XSRF-TOKEN",
xsrfHeaderName: "X-XSRF-TOKEN"
}
)
.then(res => {
console.log(res)
})
.catch(err => {
this.errors.push(err)
})
}
}
谢谢。
我有同样的问题,关于 cookie 上的 "secure" 标志,可以在请求的 cookies 选项卡上看到,但没有显示在 "application" 选项卡下的 cookies 上:
在我的例子中,我不得不要求后端设置它。
发生这种情况是因为,作为安全,您无法通过 javascript.
访问它
document.cookie // is empty
如果我设置 XSRF-TOKEN
cookie 服务器端,是否必须设置任何内容才能发送 X-XSRF-TOKEN
header?
https://github.com/axios/axios/blob/master/lib/defaults.js#L74 https://github.com/axios/axios/blob/master/dist/axios.js#L1072
看起来好像我没有,但我没有看到有人出去。
我要补充一点,我已将 withCredentials
设置为 true,所以我确实遇到了 OR 中的第一个检查:
var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
cookies.read(config.xsrfCookieName) :
undefined;
if (xsrfValue) {
requestHeaders[config.xsrfHeaderName] = xsrfValue;
}
所以如果 config.xsrfCookieName
是默认值......
更新:
所以,我的 OPTIONS
预检 CORS
正在工作,现在 POST
也是,但是没有 X-XSRF-TOKEN
被发送。
methods: {
onSubmit(e) {
this.axios
.post(
e.target.action,
{ data: this.form },
{
withCredentials: true,
xsrfCookieName: "XSRF-TOKEN",
xsrfHeaderName: "X-XSRF-TOKEN"
}
)
.then(res => {
console.log(res)
})
.catch(err => {
this.errors.push(err)
})
}
}
谢谢。
我有同样的问题,关于 cookie 上的 "secure" 标志,可以在请求的 cookies 选项卡上看到,但没有显示在 "application" 选项卡下的 cookies 上:
在我的例子中,我不得不要求后端设置它。 发生这种情况是因为,作为安全,您无法通过 javascript.
访问它document.cookie // is empty