2015-05-27 12 views
9

पोस्ट अनुरोध PHP 5.4 पर ठीक चलने वाले लैरवेल 5 ऐप का काम करते हैं। पीएचपी 5.6.9 पर चल एक ही एप्लिकेशन पर पोस्ट अनुरोध जेनरेट:लैरवेल 5 टोकनमिस्मैच एक्सप्लैशर PHP 5.6.9

TokenMismatchException VerifyCsrfToken.php लाइन 46

यह दोनों WAMP और आईआईएस पर प्रत्येक पोस्ट अनुरोध पर होता है पर। डेटाबेस सत्र और फ़ाइल सत्र का उपयोग कर होता है। एक पूर्ण पुनर्स्थापित किया और यहां किए गए सभी सुझावों का भी प्रयास किया: https://laracasts.com/discuss/channels/general-discussion/keep-getting-tokenmismatchexception-verifycsrftokenphp-on-line-46?page=2। लोग सीएसआरएफ मिडलवेयर को एक फिक्स के रूप में अक्षम कर रहे हैं, लेकिन यह एक व्यवहार्य समाधान नहीं है। किसी भी मदद की सराहना की।

+0

मैं 'एप्लिकेशन/HTTP/मिडिलवेयर/VerifyCsrfToken.php' और' से पहले वापसी माता पिता :: हैंडल ($ अनुरोध, $ अगले) डिबग करने के लिए परीक्षा हो; 'की तरह कुछ कार्य करें:' dd ([इनपुट :: सभी(), सत्र :: सभी()]) '- अपने इनपुट में' _token' के सत्र मैचों में '_token' का परीक्षण करें। – ash

+0

मैंने'env' में कुकी/सत्र कैश इंजन बदल दिया। 'CACHE_DRIVER = फ़ाइल SESSION_DRIVER = file' – Xeoncross

उत्तर

17

जब मुझे एहसास हुआ कि यह केवल IE और क्रोम में हो रहा था, लेकिन नहीं फ़ायरफ़ॉक्स, यह मेरे लिए नेतृत्व ठीक कर। ऐप AddThis शेयर बटन का उपयोग कर रहा था और जावास्क्रिप्ट पृष्ठों पर आईफ्रेम जोड़ रहा था। VerifyCsrfToken Middleware पर P3P शीर्षलेख जोड़कर यह समस्या हल हो जाती है। उम्मीद है कि यह किसी को खोने वाले घंटों को बचाता है।

public function handle($request, Closure $next) 
    { 
     $response = $next($request); 

     if (last(explode('\\',get_class($response))) != 'RedirectResponse') { 
      $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 
     } 

     return $response; 
    } 
+0

बस कुछ घंटों की संभावना 4 5: /: 3 –

+0

आपको बहुत बहुत धन्यवाद! एक ही समस्या – Janky

+0

यह मुझे बहुत समय बचाता है – vvr02

0

डाल <meta name="csrf_token" content="{{ csrf_token() }}"> तो टोकन हमेशा उपलब्ध है और आपके AJAX अनुरोध के साथ उपयोग करते हैं: पूर्व:

var csrftoken = (function() { 
var metas = window.document.getElementsByTagName('meta'); 
for(var i=0 ; i < metas.length ; i++) { 
    if (metas[i].name === "csrf-token") { 
     return metas[i].content; 
    } 
}})(); 
+0

इस jQuery – dynamic

+1

साथ oneline किया जा सकता है हाँ यह कर सकते थे,' $ .ajaxSetup ({ हेडर की तरह कुछ: { 'एक्स-CSRF-टोकन': $ ('मेटा [नाम = " csrf_token "] ')। attr (' content ') } });' –

0

बस अपने प्रपत्र ब्लॉक करने के लिए {{ csrf_field() }} जोड़ सकते हैं और यह समय की आप बहुत बचत होगी

<form action="{{ route('signup') }}" method="post" class="form-signin"> 
{{ csrf_field() }} 
... 
</form> 
0

किसी के लिए, जो जोड़कर form क्षेत्र में {{ csrf_field() }} जोड़ने के बावजूद इस मुद्दे का सामना करना पड़ रहा है और यहां तक ​​कि यह हेड टैग <meta name="csrf-token" content="{{ csrf_token() }}">

समस्या आपके मौजूदा उपयोगकर्ता को सही समूह में जोड़ने के कारण भंडारण में लेखन के साथ है। अपने वर्तमान उपयोगकर्ता को www-data समूह में जोड़ना सुनिश्चित करें। इस आदेश लिखें

sudo chown -R :www-data /path/to/laravel-folder 

भंडारण फ़ोल्डर में सही अनुमति के रूप में अच्छी तरह से में laravel एप्लिकेशन देने के लिए सुनिश्चित करें।

sudo chmod -R 775 /path/to/laravel-folder/storage 

मुझे उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे