سلام دوستان تو تمام روت هایی که با پست هستن 419 میگیرم
کلی جستجو کردم برا درست کردنش اما هیچ کدوم جواب نداد .
از دوستان علت به وجود اومدن چنین مشکلی رو میدونن ؟
این مشکل برا خیلیا به وجود اومده گویا اما تمام راه حل هایی که پیشنهاد شده بود رو تست کردم و جواب نگرفتم .
@navids
@mrerfan.ir
سلام آقا نوید و آقا عرفان
من این کار هایی که گفتید انجام دادم ینی csrf هارو توی فرم گذاشتم ولی هنوز ارور 419 page expired میگیرم
این ارور هم مال هر فرم و روت پست دارم هست چه لاگین چه رجیستر چه فراموشی رمز
علاوه بر اینا کانفیگ و کش پروژه رو هم پاک کردم و همین کار هارو هم با مرورگر کردم بازم ارور میده
دیگه واقعا نمیدونم چه کاری باید بکنم این مشکل حل بشه
لاراول نسخه 7 است و از دو مرورگر کروم و فاکس آخرین ورژن استفاده میکنم
@rasool
حتما یک جای کار رو اشتباه انجام میدید. و الا با این مشخصاتی که میفرمایید نباید مشکلی وجود داشته باشه.
این کار روش اصولی و صحیحی نیست، ولی صرفا به منظور دیباگ کردن یکبار مسیر های مشکل دار رو در پراپرتی except در فایل
app/Http/Middleware/VerifyCsrfToken قرار بدید و تست کنید ببینید مشکل برطرف میشه؟ همون طوری که از اسمش مشخصه با اینکار میگید این مسیرها رو میخوام استثناء کنم از چک کردن CSRF Token.
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
}
@mhyeganeh
بله بله این کاری گفتین کردم و فرم به درستی کار کرد البته بغیر از فلش مسیج ها یا همون ارور های فرم که نشون داده نمیشدند که نمیدونم مربوط به همین csrf میشه یا مشکل یجای دیگست!
بنابر این مشکل ارور 419 مال csrf میشه. من درست بعد از تگ فرم csrf@ قرار دادم ولی نمیدونم چرا به درستی کار نمیکنه :(
اگه راه حلی هست مربوط به csrf یا حتی عدم نمایش ارور های فرم ممنون میشم بگین.
@rasool
قبلا درست کار میکرده الان دچار مشکل شده؟ یا اینکه کلا تا بحال در پروژه دیگه این کارو انجام دادید یا بار اول و در حال یادگیری هستید؟
نسخه لاراولی که استفاده میکنید چنده؟ توجه داشته باشید که در نسخه های قدیمی دستور @csrf وجود نداشتند و بایستی از کد زیر استفاده می کردید:
{{ csrf_field() }}
در هر دو حال یکبار در صفحه وب کامپلایل شده view page source رو بزنید و ببینید آیا با یک تگ input مثل تگ زیر جایگزین شده یا نه:
<input type="hidden" name="_token" value="yIcHUzipr2Y2McGE3EUk5JwLOPjxrC3yEBetRtlV">
در خصوص flash message هم دلایل خیلی زیادی میتونه داشته باشه و بدون دیدن کد و پروژه نمیشه نظری داد.
@mhyeganeh
بله در این گفتگو کامل توضیح دادم.
من الان برای آپدیت پروژه ای که قبلا کار کرده بودم این ارور رو دریافت میکنم و نسخه لاراول هم از همون اول 7 بوده
با فرم ها هم آشنایی دارم و در پروژه ها ازشون استفاده میکنم
ببینید همچی مرتبه موقعی view page source میگیرم input مربوطه موجوده و با هر رفرش مقدار توکن عوض میشه
برای همین که به نظر خودم هیچ مشکلی توی csrf نیست و میگم شاید این مشکل با مشکل فلش مسیج ها یکی باشه یعنی یک مشکل دیگه باعث این خرابکاری ها و شاید خرابکاری های دیگه ای که من هنوز نفهمیدم شده باشه که ازش بیخبرم
با این نشونه هایی که میفرمایید به احتمال زیاد مشکل از فرایند ذخیره Session هاتون هست که به هر دلیلی درست انجام نمیشه یا persistant نیستند. چون هم CSRF و هم بحث فلش مسیج ها همون طوری که میدونید در ارتباط مستقیم هستند با این موضوع.
موضوع CSRF رو کلا فراموش کنید فعلا و باید دنبال دیباگ کردن پروژتون در خصوص ذخیره سازی Session ها باشید. مثلا چک کردن SESSION_DRIVER و اینکه آیا صحیح تنظیم شده یا نه.
یک سری به لینک زیر هم بزنید. مفصل صحبت هایی شده درباره اش و آخرش هم متوجه شده دقیقا مشکلش مربوط به Session هاست و راه حلش رو هم توضیح داده:
https://github.com/laravel/framework/issues/26106
@mhyeganeh
با سلام مجدد من تو این چند روز پروژمو روی یک سیستم دیگه تست کردم اوکی بود ولی روی سیستم خودم ارور داره پس پروژه به درستی کار میکنه
اومدم محتویات پروژه رو ....views controllers رو بردم توی یک لاراول جدید دیدم اونجا هم همین ارور هست
دیگه به این نتیجه رسیدم که لاراول مشکلی نداره و شاید زمپ به مشکل خورده برای همین زمپ رو حذف و مجدد نصب کردم
ولی در کمال ناباوری دیدم هنوز ارور پابرجاست :(
دیگه واقعا گیر کردم نمیدونم مشکل چی میتونه باشه ولی مطمعن شدم پروژه اوکیه چون هم روی یک سیستم دیگه ران شد هم برای خودم توی یک پروژه جدید ارور داد
یک احتمال دیگه که قوی تر از بقیه هم هست اینه که مشکل از مرورگرتون باشه. چک کنید که ذخیره سازی Cookie ها برای اون دامنه فعال باشه (بلاک نشده باشه) با مرورگرهای دیگه هم امتحان کردید آیا؟
غیر از این دو موردی که اشاره کردید چک کنید که آیا اصلا میتونید یک کوکی رو در مرورگر کاربر ذخیره کنید و این طرف ببینیدش یا نه...؟
بعد چک کنید که میتونید یک داده ای رو در Session کاربر قرار بدید و بعد بگیریدش یا نه.
مرحله به مرحله این اقدامات رو انجام بدید تا به سرنخ اصلی برسید. اگر Session ها ذخیره نمیشدند از Driver های دیگه لاراول مثل فایل یا دیتابیس استفاده کنید و مجدد تست کنید.
و اینکه پروژتون رو یکبار روی هاست/سرور قرار بدید و چک کنید مشکل برطرف میشه یا نه؟
تمامی مواردی که عرض کردم رو مرحله به مرحله پیش برید و تست کنید. انشالله که برطرف میشه مشکلتون.
@rasool
سلام وقت خوش این مشکلتون حل شد
اگه حل شده میشه بگید چجوری ؟ منم این مشکل رو دارم و روی لوکالم جواب میده ولی روی هاست به مشکل میخورم
با ajax درخواست بزنید و مشخصه زیر رو در header درخواستتون set کنید.
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
@amir.d79
با سلام و وقت بخیر
بله من مشکلم حل شد و راجبش در https://roocket.ir/discuss/10937 صحبت کردم
البته من مشکلم فرق میکرد (خیلی عجیب بود) نه لوکال کار میکرد نه روی هاست ولی مشکل شما که میگین لوکال خوبه پس احتمالا با پاک کردن حافظه سشن ها در هاست این مشکل برطرف میشه چون همونطور که میدونین اینچنین ارور هایی مربوط به سشن ها هستند
برای این کار هم کافیه نسخه php هاستتون رو یک بار تغییر بدین و بعد برگردونین به نسخه ای که درحال حاضر هست اینطوری حافظه سشن پاک میشه و احتمال زیاد درست میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟