首页 > 解决方案 > Axios:XSRF Coo​​kie 未在生产中随请求一起发送

问题描述

我让 VueJS 前端与 Rails 后端通信。我可以成功地创建1个会话并接收要存储的 CSRF 令牌,但是当部署在 Heroku 上时 ,它从未在后续的 Axios 请求中发送2 。它在 localhost 上运行良好,并且前端和后端都托管在 herokuapp.com 上,因此 SameSite 应该不是问题。

Axios 设置为在请求中包含 XSRF 令牌:

const API_URL = process.env.VUE_APP_API_URL || "http://localhost:8080";
axios.defaults.baseURL = API_URL;
axios.defaults.headers.post["Content-Type"] = "application/json";
axios.defaults.xsrfCookieName = "CSRF-TOKEN";
axios.defaults.xsrfHeaderName = "X-CSRF-Token";
axios.defaults.withCredentials = true;

如何确保 Axios 将此 cookie 传递给我的 Rails 应用程序?下图:创建会话时返回的 cookie,然后未包含在以下请求中。

[ 在此处输入图像描述1

在此处输入图像描述

标签: ruby-on-railshttpcookiesaxios

解决方案


这最终成为 .herokuapp.com 在公共后缀列表中的问题。添加自定义域解决了这个问题。

https://devcenter.heroku.com/articles/cookies-and-herokuapp-com


推荐阅读