[JQUERY] Laravel 5.5 아약스 전화 419 (알 수없는 상태)
JQUERYLaravel 5.5 아약스 전화 419 (알 수없는 상태)
해결법
-
1.헤드 섹션에서 사용 :
헤드 섹션에서 사용 :
<meta name="csrf-token" content="{{ csrf_token() }}">
및 얻을 CSRF 토큰 아약스 :
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
Laravel 문서 csrf_token을 참조하십시오
-
2.이 문제를 해결하는 또 다른 방법은 아약스 데이터의 _token 필드를 사용하여 값을 설정하는 것입니다 {{csrf_token ()}} 블레이드한다. 여기 난 그냥 내 말에 시도하는 작업 코드입니다.
이 문제를 해결하는 또 다른 방법은 아약스 데이터의 _token 필드를 사용하여 값을 설정하는 것입니다 {{csrf_token ()}} 블레이드한다. 여기 난 그냥 내 말에 시도하는 작업 코드입니다.
$.ajax({ type: "POST", url: '/your_url', data: { somefield: "Some field value", _token: '{{csrf_token()}}' }, success: function (data) { console.log(data); }, error: function (data, textStatus, errorThrown) { console.log(data); }, });
-
3.이 Kannan은의 대답과 비슷합니다. 그러나이 수정 토큰이 크로스 도메인 사이트로 전송 안되는 문제. 이 로컬 요청 인 경우에만 헤더를 설정합니다.
이 Kannan은의 대답과 비슷합니다. 그러나이 수정 토큰이 크로스 도메인 사이트로 전송 안되는 문제. 이 로컬 요청 인 경우에만 헤더를 설정합니다.
HTML :
<meta name="csrf-token" content="{{ csrf_token() }}">
JS :
$.ajaxSetup({ beforeSend: function(xhr, type) { if (!type.crossDomain) { xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')); } }, });
-
4.페이지에서 이것을 사용
페이지에서 이것을 사용
<meta name="csrf-token" content="{{ csrf_token() }}">
당신의 아약스에서 데이터를 사용 :
_token: '{!! csrf_token() !!}',
그건:
$.ajax({ url: '/fetch-company/' + companyId, dataType : 'json', type: 'POST', data: { _token: '{!! csrf_token() !!}', }, contentType: false, processData: false, success:function(response) { console.log(response); } });
감사.
-
5.그것은 당신의 세션 도메인이 앱 URL과 일치하지 않는 및 / 또는 호스트 응용 프로그램에 액세스하는 데 사용되는 가능합니다.
그것은 당신의 세션 도메인이 앱 URL과 일치하지 않는 및 / 또는 호스트 응용 프로그램에 액세스하는 데 사용되는 가능합니다.
1) 당신은 .env 파일을 확인 :
SESSION_DOMAIN=example.com APP_URL=example.com
2) 확인 설정 / session.php
그들이 올바른지 확인 값을 확인합니다.
-
6.내 경우에는 내가 제출 양식에 csrf_token 입력을 추가하는 것을 잊었다. 그래서 내가 이런 짓을 HTML :
내 경우에는 내가 제출 양식에 csrf_token 입력을 추가하는 것을 잊었다. 그래서 내가 이런 짓을 HTML :
<form class="form-material" id="myform"> ... <input type="file" name="l_img" id="l_img"> <input type="hidden" id="_token" value="{{ csrf_token() }}"> .. </form>
JS :
//setting containers var _token = $('input#_token').val(); var l_img = $('input#l_img').val(); var formData = new FormData(); formData.append("_token", _token); formData.append("l_img", $('#l_img')[0].files[0]); if(!l_img) { //do error if no image uploaded return false; } else { $.ajax({ type: "POST", url: "/my_url", contentType: false, processData: false, dataType: "json", data : formData, beforeSend: function() { //do before send }, success: function(data) { //do success }, error: function(jqXhr, textStatus, errorThrown) //jqXHR, textStatus, errorThrown { if( jqXhr.status === "422" ) { //do error } else { //do error } } }); } return false; //not to post the form physically
-
7.당신은 이미 위의 제안을 완료하고 여전히 문제가 발생합니다.
당신은 이미 위의 제안을 완료하고 여전히 문제가 발생합니다.
반드시 그 ENV 변수를 확인하십시오 :
SESSION_SECURE_COOKIE
지역에 같은 당신이하는 SSL 인증서가없는 경우 false로 설정됩니다.
-
8.당신이 파일에서로드의 .js 인 경우 당신은 당신이의 .js를 가져 어디에 "주".blade.php 파일에 csrf_token의 변수를 설정하고 아약스 호출에서 변수를 사용해야합니다.
당신이 파일에서로드의 .js 인 경우 당신은 당신이의 .js를 가져 어디에 "주".blade.php 파일에 csrf_token의 변수를 설정하고 아약스 호출에서 변수를 사용해야합니다.
index.blade.php
... ... <script src="{{ asset('js/anotherfile.js') }}"></script> <script type="text/javascript"> var token = '{{ csrf_token() }}'; </script>
anotherfile.js
$.ajax({ url: 'yourUrl', type: 'POST', data: { '_token': token }, dataType: "json", beforeSend:function(){ //do stuff }, success: function(data) { //do stuff }, error: function(data) { //do stuff }, complete: function(){ //do stuff } });
-
9.당신이 Laravel 정책을 사용하여 컨트롤러 액션을 인증하는 경우 당신이하는 csrf_token이 비록 당신이 아니라 419 응답을 할 수 있습니다. 이 경우 당신은 당신의 정책 클래스에 필요한 정책 기능을 추가해야합니다.
당신이 Laravel 정책을 사용하여 컨트롤러 액션을 인증하는 경우 당신이하는 csrf_token이 비록 당신이 아니라 419 응답을 할 수 있습니다. 이 경우 당신은 당신의 정책 클래스에 필요한 정책 기능을 추가해야합니다.
-
10.일부 심판 =>
일부 심판 =>
... <head> // CSRF for all ajax call <meta name="csrf-token" content="{{ csrf_token() }}" /> </head> ... ... <script> // CSRF for all ajax call $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': jQuery('meta[name="csrf-token"]').attr('content') } }); </script> ...
-
11.그냥 폼 데이터를 직렬화하고 문제가 해결 얻을.
그냥 폼 데이터를 직렬화하고 문제가 해결 얻을.
data: $('#form_id').serialize(),
-
12.당신은 CSRF 토큰을 얻을 수 있습니다 ..
당신은 CSRF 토큰을 얻을 수 있습니다 ..
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
같은 문제가 일을하는 상승 후, 그냥이 메타 태그 추가 <메타 이름 = "CSRF 토큰"내용 = "{{csrf_token ()}}">
이 또한 오류가 발생 후에는 아약스 오류를 확인할 수 있습니다. 그리고 또한 아약스 오류를 확인
$.ajax({ url: 'some_unknown_page.html', success: function (response) { $('#post').html(response.responseText); }, error: function (jqXHR, exception) { var msg = ''; if (jqXHR.status === 0) { msg = 'Not connect.\n Verify Network.'; } else if (jqXHR.status == 404) { msg = 'Requested page not found. [404]'; } else if (jqXHR.status == 500) { msg = 'Internal Server Error [500].'; } else if (exception === 'parsererror') { msg = 'Requested JSON parse failed.'; } else if (exception === 'timeout') { msg = 'Time out error.'; } else if (exception === 'abort') { msg = 'Ajax request aborted.'; } else { msg = 'Uncaught Error.\n' + jqXHR.responseText; } $('#post').html(msg); }, });
-
13.
formData = new FormData(); formData.append('_token', "{{csrf_token()}}"); formData.append('file', blobInfo.blob(), blobInfo.filename()); xhr.send(formData);
-
14.2019 Laravel 업데이트하지 마십시오, 내가이 게시하지만 브라우저를 사용하는 나 같은 사람들 개발자를 위해 위의 Laravel 5.8에 API를 가져옵니다 생각했다. 당신은 헤더 매개 변수를 통해 토큰을 전달해야합니다.
2019 Laravel 업데이트하지 마십시오, 내가이 게시하지만 브라우저를 사용하는 나 같은 사람들 개발자를 위해 위의 Laravel 5.8에 API를 가져옵니다 생각했다. 당신은 헤더 매개 변수를 통해 토큰을 전달해야합니다.
var _token = "{{ csrf_token }}"; fetch("{{url('add/new/comment')}}", { method: 'POST', headers: { 'X-CSRF-TOKEN': _token, 'Content-Type': 'application/json', }, body: JSON.stringify(name, email, message, article_id) }).then(r => { return r.json(); }).then(results => {}).catch(err => console.log(err));
-
15.내 dev에 환경이 로그인 작동하지 않았다, 그래서 나는 SESSION_SECURE_COOKIE = 거짓을 추가, 그래서 나는, 참으로 SESSION_SECURE_COOKIE 세트가 있었다 내 dev에 .env의 파일과 모든 일에 내 실수가 session.php 파일을 변경하는 대신 .env의 파일에 변수를 추가 한 미세.
내 dev에 환경이 로그인 작동하지 않았다, 그래서 나는 SESSION_SECURE_COOKIE = 거짓을 추가, 그래서 나는, 참으로 SESSION_SECURE_COOKIE 세트가 있었다 내 dev에 .env의 파일과 모든 일에 내 실수가 session.php 파일을 변경하는 대신 .env의 파일에 변수를 추가 한 미세.
-
16.u는 당신의 아약스 제출 요청 (POST)에이를 포함하도록 잊어 버린 경우이 오류도 발생 ContentType을 : 거짓, processData : 거짓,
u는 당신의 아약스 제출 요청 (POST)에이를 포함하도록 잊어 버린 경우이 오류도 발생 ContentType을 : 거짓, processData : 거짓,
-
17.이미 토큰 CSRF 전송되었던 경우에도이 오류가 발생했습니다. 밝혀졌다 서버에 남아 더 이상 공간이 없었다.
이미 토큰 CSRF 전송되었던 경우에도이 오류가 발생했습니다. 밝혀졌다 서버에 남아 더 이상 공간이 없었다.
-
18.이것은 그 경우에 당신이 양식을 필요로하지 않는 좋은 작품.
이것은 그 경우에 당신이 양식을 필요로하지 않는 좋은 작품.
헤더에 이것을 사용 :
<meta name="csrf-token" content="{{ csrf_token() }}">
당신의 자바 스크립트 코드에서이 :
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': '<?php echo csrf_token() ?>' } });
-
19.콘솔에 419 개 알 수없는 상태를 해결하는 간단한 방법은 FORM이 스크립트 내부를 넣어하는 것입니다. {{csrf_field ()}}
콘솔에 419 개 알 수없는 상태를 해결하는 간단한 방법은 FORM이 스크립트 내부를 넣어하는 것입니다. {{csrf_field ()}}
-
20.이것은 나를 위해 일한 :
이것은 나를 위해 일한 :
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } });
이 세트 일반 AJAX 호출 후. 예:
$.ajax({ type:'POST', url:'custom_url', data:{name: "some name", password: "pass", email: "test@test.com"}, success:function(response){ // Log response console.log(response); } });
from https://stackoverflow.com/questions/46466167/laravel-5-5-ajax-call-419-unknown-status by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 어떤 형태의 데이터의 손실없이 현재 페이지를 다시로드? (0) | 2020.10.16 |
---|---|
[JQUERY] 지연 JQuery와 호버 이벤트? (0) | 2020.10.16 |
[JQUERY] 어떻게 HTML 파일에 자바 스크립트 파일을 링크합니까? (0) | 2020.10.16 |
[JQUERY] jQuery를 사용하여 요소의 모든 속성을 (0) | 2020.10.16 |
[JQUERY] 내 웹 사이트에 "추가 즐겨 찾기"버튼 또는 링크를 추가하는 방법은 무엇입니까? (0) | 2020.10.16 |