CSRF 令牌不匹配 Laravel Airlock axios

问题描述 投票:0回答:2
  • 气闸版本:1.0.0
  • Laravel 版本:7.0.0
  • PHP版本:7.2.0
  • 数据库驱动及版本:MySql 5.7.23

描述:

我尝试使用来自不同域的 axios 登录。 我的核心位于“mydomain.com”,反应站点位于“seconddomain.com”。 如果我尝试使用 axios API 请求从 secondarydomain.com 登录到 mydomain.com,它工作正常,也没有 CSRF-COOKIE 请求。 但是如果我尝试从我的反应“localhost:3000”登录到“mydomain.com”,我会遇到“CSRF令牌不匹配”。为什么?

这是我的配置:

会议中

'same_site' => "none",

axios配置

axios.create({
  baseURL: "mydomain.com",
  withCredentials: true,
  responseType: "json",
});

axios登录

await API.get('/airlock/csrf-cookie');
response = await API.post(
      '/api/v1/login',
      data
);

来自浏览器的 cookie - csrf-cooke 调用

来自浏览器的 cookie - 登录调用

php reactjs axios laravel-7 laravel-airlock
2个回答
0
投票

我认为你的问题是

PHP version.

要使用

laravel-7
,您需要确保您的服务器满足 满足以下要求:

  • PHP >= 7.2.5
  • BCMath PHP 扩展
  • Ctype PHP 扩展
  • 文件信息 PHP 扩展
  • JSON PHP 扩展
  • Mbstring PHP 扩展
  • OpenSSL PHP 扩展
  • PDO PHP 扩展
  • Tokenizer PHP 扩展
  • XML PHP 扩展

检查服务器要求文档


0
投票

我遇到了同样的问题,我解决了在 axios create 中添加“withXSRFToken: true”的问题。

© www.soinside.com 2019 - 2024. All rights reserved.