Laravel 5.3 응용 프로그램에서 AJAX를 사용하는 응용 프로그램이 있습니다. 인증 뒤에 있고 인증되지 않은 페이지가 있습니다. 인증 내부에있는 것들이 잘 작동하고 있습니다. 밖에있는 사람 (공개 대면)은 나에게 악명 높은 TokenMismatchException in VerifyCsrfToken.php line 68
을줍니다. AJAX와 헤더에 토큰을 연결하기 위해, 나는 ...다른 Laravel Token Mismatch 예외 문제
$.ajaxSetup({
cache: false,
async: true,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
을이 사용하고 내가 요청을 할 때, 나는이 볼 수 있기 때문에 ...
을하고있다. ..하지만 토큰이 일치하지 않습니다. 프레임 워크 파일 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class
에 가서 세션 토큰 및 전달 된 토큰에 dd()
을 수행하면 일치하지 않습니다.
것들 내가 시도 :
- 지우기 캐시 (뷰, 설정, 캐시)
- 대신 AJAX 헤더의
csrf_field()
을 사용하여 레디 스에 파일에서 세션 드라이버를 변경
왜 이것이 작동하지 않는지 나는 알 수 없다. 다른 아이디어?
쿠키에서 CSRF-TOKEN과 XSRF-TOKEN을 면밀히 살펴보면 동일하지 않습니다. 따라서 토큰이 일치하지 않는 이유 중 하나 일 수 있습니다. – Samundra
@Samundra 프레임 워크는 헤더를 'X-CSRF-TOKEN'으로 찾습니다. 또한 다른 페이지에서도 작동합니다. ? '를 분명히 \ 재단 \ HTTP를 미들웨어 \ VerifyCsrfToken \ :: class' '$ 토큰 = $ 요청 -> 입력 ('_ 토큰') : $ 요청 -> 헤더 ('X-CSRF 토큰'); ' – dericcain
Laravel은 임의의 문자열에서 생성 된 토큰을 세션에 저장하는 것처럼 보입니다. 그런 다음 각 요청에 대해 전달 된 토큰을 세션에서 생성 된 토큰과 비교합니다. 현재 라우트중인 경로가'routes'/web.php' 세션을 적절하게 설정하는'web' 미들웨어 그룹 뒤에 있는지 확인하십시오. – user3158900