2016-09-16 2 views
0

나는 'CSRF 토큰 불일치'오류가 발생하는 중, 나는 아약스와 함께 Laravel 백엔드에 데이터를 게시하려하고있다.아약스 Laravel에 게시 - CSRF 토큰 불일치

첫째, (가 전체 양식을하지 않습니다 때문에, 몸이 아니라 그 형태 이외의 유일한 2 요소는 게시 할) 나는 HTML에 토큰을 배치했습니다 그리고 '준비 문서'에서

<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}"> 

, 나는 아약스와 함께 데이터를 게시하려고합니다.

data["_token"] = jQuery('#token').val(); 

// Also tried this: 
jQuery.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': jQuery('#token').val() 
     } 
}) 

console.log(data) // returns the array with _token: "esOKmY8Tpr4UvhTYMhWcWui0rpvYEjJ3es7ggics" 

jQuery.ajax({ 
    type: "POST", 
    url: '/my-route', 
    data: data, 
    success: function() { 
      console.log("A"); 
    } 
}); 

내가 게시 할 데이터

더 큰 형태의 작은 덩어리이며,이 방법을 사용하여, 나는 양식을 자동으로 완성 할 수 있습니다. HTML 입력의 작은 덩어리는 다른 하위 양식 안에 없습니다. 아마도 이것이 사실 일 수 있습니까?
- Form: 
- A: bla // to be posted 
- B: hello // to be posted 
- C: smt else // no post 

하지만

이 값이 괜찮

경로를 작업하기 :


편집 : 나는 <meta> 태그에 <input>을 변경

+0

경로를 알려주시겠습니까? – Carlos

+0

원본 정책이 잘못된 것 같습니다. Laravel CSRF는 정상적인 상황에서 아무런 트릭없이 즉시 사용할 수 있습니다. – Nevertheless

+0

관리자 미들웨어가 리디렉션을 수행합니까? – RedGlobe

답변

1

나는 지금처럼 Ajax 코드에 너무

<meta name="csrf-token" content="{{ csrf_token() }}" /> 

처럼 meta에 CSRF 태그를 포함 넣고 그것을 읽으려고 같은 문제가 있었다 :

<script type="text/javascript"> 
$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 
</script> 

최신 업데이트를

url 변수를 다음과 같이 수정하십시오.

jQuery.ajax({ 
    type: "POST", 
    url: '/my-route'+'?_token=' + '{{ csrf_token() }}', 
    data: data, 
    success: function() { 
     console.log("A"); 
    } 
    }); 
+0

나는 당신이 말한 것을 정확하게 시도했습니다. csrf 토큰이 일치하지 않습니다. '$ ('meta [name = "csrf-token"]'). attr ('content')'를 기록하고 토큰을 성공적으로 기록하지만 토큰 불일치 오류가 계속 발생합니다. 유감스럽게도 이것은 대답이 아닙니다 :/ – senty

+0

미들웨어에서이 경로를 제외시키지 않으시겠습니까? – Nour

+0

나는 csrf 토큰을 계속 사용하고 싶습니다. – senty