Я действительно расстраиваюсь из-за этой ошибки, у меня есть данные с пост-запросом ajax, но ошибочное несоответствие токена CSRF появляется редко. это моя пост-настройка jquery ajax
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
ajax:{
"url": "trip/jsondata",
"dataType": "json",
"type": "POST",
"data" : function ( d ){
d.nState= $('#viewoption').val(),
d.nYear = $('#viewyear').val();
}
},
Я не знаю, почему мой пост-запрос возвращает несоответствие токена CSRF, поэтому я изменил файл Illuminate \ Foundation \ Http \ Middleware \ VerifyCsrfToken, чтобы он возвращал значения токенов, как показано ниже.
public function handle($request, Closure $next)
{
if (
$this->isReading($request) ||
$this->runningUnitTests() ||
$this->inExceptArray($request) ||
$this->tokensMatch($request)
) {
return tap($next($request), function ($response) use ($request) {
if ($this->shouldAddXsrfTokenCookie()) {
$this->addCookieToResponse($request, $response);
}
});
}
$error='getTokenFromRequest :'.$this->getTokenFromRequest($request).' | X-CSRF-TOKEN :'.$request->header('X-CSRF-TOKEN').' | Session :'.$request->session()->token();
throw new TokenMismatchException('CSRF token mismatch. err: '.$error);
}
Пытаюсь вернуть 3 переменные (getTokenFromRequest, X-CSRF-TOKEN и токен сеанса). И результат:
1008 *
Сообщение: «CSRF токен несоответствие ERR: getTokenFromRequest:
w0nxu5OPWZHFrBFqMtLsL3IWJ1vCg0VAGbCDt4c3 | X-CSRF-ЗНАК:.
w0nxu5OPWZHFrBFqMtLsL3IWJ1vCg0VAGbCDt4c3 |Сессия:
CiMUsbN9BumKIElvrOzJX8TnCA8UeuAAaLzbfZTO"
Вы можете видеть, что между X-CSRF-TOKEN с токеном сеанса есть различие, я не знаю почему?
Тогда я пытаюсьпроверьте в папке storage \ framework \ session, там два файла. ![enter image description here](https://i.stack.imgur.com/P9dVz.png)
Первый файл заполнен следующим образом a: 7: {s: 6: "_ token"; s: 40: "w0nxu5OPWZHFrBFqMtLsL3IWJ1vCg0VAGbCDt4c3";
Второй файл заполняется следующим образом: a: 2: {s: 6: "_ token"; s: 40: "CiMUsbN9BumKIElvrOzJX8TnCA8UeuAAaLzbfZTO";
Anyoneможет помочь, что происходит в моем приложении? нормально ли иметь 2 сеанса одновременно с другим токеном?