axios 未在生产中发送 X-CSRFToken 标头
Posted
技术标签:
【中文标题】axios 未在生产中发送 X-CSRFToken 标头【英文标题】:axios is not sending X-CSRFToken header in production 【发布时间】:2021-03-13 04:05:12 【问题描述】:我在 Heroku 上部署了 django rest,域如下:api.herokuapp.com
。
在前端我有 React 域,例如:dashboard.mydomain.com
axios 的设置是:
axios.defaults.withCredentials = true;
axios.defaults.xsrfCookieName = "csrftoken";
axios.defaults.xsrfHeaderName = "X-CSRFToken";
本地一切正常。
生产中:
发出 POST 请求时出现 403 错误:CSRF Failed: CSRF token missing or incorrect
看到请求发送了cookie:
但它没有发送X-CSRFToken
标头。
本地正常发送标头。
我怀疑这可能是因为生产是 HTTPS 或因为域不同,但我对此了解不多。
可能是什么原因?
【问题讨论】:
【参考方案1】:使用这个
axios.defaults.headers.common['X-CSRF-TOKEN'] = token;
【讨论】:
谢谢,你是用 js-cookie 包获取令牌还是硬编码? 我提取了后端发送的代码。如果您喜欢答案,可以投票。 如果 cookie 是 HttpOnly,这将不起作用以上是关于axios 未在生产中发送 X-CSRFToken 标头的主要内容,如果未能解决你的问题,请参考以下文章
Axios 未在请求中发送自定义标头(可能是 CORS 问题)
使用 Axios 从 React 向 Django 发送数据 - 发布请求为空