【发布时间】:2020-06-17 09:13:06
【问题描述】:
我一直在尝试让 Laravel Airlock 与我正在开发的一个新的网络应用程序一起工作,但无论我尝试什么,我都无法让它工作。
airlock.php 有以下设置:
'stateful' => ['https://control.domain.tld',
'https://management.domain.tld',
'localhost'],
cors.php 有:
'paths' => ['api/*', 'login', 'airlock/csrf-cookie'],
'supports_credentials' => true,
我的 .env 有:
SESSION_DRIVER=cookie
session.php 有:
'domain' => env('SESSION_DOMAIN', null),
在我的 Vue 应用程序中,我正在运行此 Axios 请求,但我不断收到 CSRF 令牌不匹配。
axios.get('https://controlapi-v2.domain.tld/airlock/csrf-cookie').then(response => {
console.log(response);
});
我以零运气遵循了所有在线指南。我会在这里遗漏什么?
airlock.php 中的状态变量有 3 个 URL,因为我的应用程序将位于 2 个域和 localhost 上以进行开发和测试。我目前只在 localhost 上尝试过,我想知道这是否是导致问题的原因。
如果我将 localhost 更改为 http://localhost,我不再遇到 CSRF 令牌不匹配的情况,但是当我检查 Chrome 开发工具时,没有设置 cookie。
我还了解到,SPA 必须与 API 位于同一个子域中才能使 Airlock 工作。这是真的吗?
【问题讨论】:
-
你在 6.x 还是 7.x 上使用哪个版本的 Laravel?
-
@hinteractive02 - 7.0,昨天刚安装。