クロス オリジンのログイン リクエストを実行しようとしていますが、ログイン以外はすべて機能しています。したがって、api.example.com にアクセスして laravel アプリでログインし、次に www.example.com にアクセスすると、/api/user エンドポイント (エアロックの一部としてセットアップ) を呼び出してユーザーを取得できます。私が失敗しているのは、ユーザー名/パスワードを使用してAJAX経由でログインすることです。使用する JS は次のとおりです。
まず私が電話するsetCSRFCookie()
function setCSRFCookie() {
let xhr = new XMLHttpRequest();
xhr.open('GET', domain+'/airlock/csrf-cookie');
xhr.withCredentials = true;
xhr.send(null);
}
それから私は電話しますloginUser()
function loginUser() {
let xhr = new XMLHttpRequest();
let params = 'username=m@example.com&password=password';
xhr.open('POST', domain + '/login', true);
xhr.withCredentials = true;
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send(params);
}
419 (unknown status)
無効な CSRF トークンに対する Laravel の応答のように見える を取得しています。私は実際のリクエストと両方APP_NAME_session
を見XSRF-TOKEN
て、リクエストの一部として渡されています。私が持っていた唯一の考えは、デフォルトの認証ルートがこれに対してセットアップされておらず、エアロックミドルウェアによって提供されるように、/login
下で1つ実行する必要があるということでした. /api/login
私はあなたが与えることができる任意の助けに感謝します.
Laravel 6.12.0 エアロック 0.1.0