2015-10-25 27 views
7

ilgili kod aşağıda gösterilmiştir: Şimdi saatlerce bu anlamaya çalışıyorumlaravel 5.1 XMLHttpRequest AJAX POST TokenMismatchException

var csrfToken = "{{ csrf_token() }}"; 
xmlhttp.open("POST", "/internal/v1/create/strategy", true); 
xmlhttp.setRequestHeader('X-CSRF-TOKEN', csrfToken); 
postString = "param1=" + varOne + "&param2=" + varTwo; 
xmlhttp.send(postString); 

, dürüstçe bu noktada ne yapacağını bilemezsin. Not, form yöntemini kullanırsam her şeyin iyi çalıştığını unutmayın. Ben de postString parametre olarak CSRF belirteci gönderme denedim: "_token =" + csrfToken

+0

X-XSRF-TOKEN ile denediniz mi? – Iamzozo

+0

Başlıkların gerçekten iletilip iletilmediğini görmek için gönderi isteğinde hata ayıklamayı denediniz mi? Ayrıca, xmlhttp nesnesini nasıl başlattığınızı göremiyorum. – Tim

+0

xmlhttp nesnesi, normalde kodda daha önce başlatıldı, ancak kodu düzeltebildim. Burada oyunda iki sorun vardı, config/session.php dosyasında domain null olarak ayarlandı, kurulumun yapılması gereken bir yer okudum ya da hata yaptım, bu yüzden bunu yaptım, ama ek olarak içeriğe yer vermem gerekiyordu. -type kodlanmış form olarak yazın. – jrgilman

cevap

2

sorun iki bölümlü çözüm vasıtasıyla çözüldü:

O 'İçerik- eklenmesi gerekmiştir fiili alanına doğru alanı 'değişkeni: '

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

Ayrıca, config/da işaret etmek gerekliydi dosyasını session.php laravel POST'ed parametrelerini okumak mümkün olabilmesi için başlığını' yazın null varsayılan değeri yerine uygulama. Bu muhtemelen ilk kurulum sırasında yapılan bir şeydir, ama bunu yapmayı unutmuş olmalıyım.

Bu değişikliklerin her ikisini de yaptıktan sonra, POST isteği başarıyla AJAX çağrıları üzerinden gerçekleştirilir.