taban sw
4 سال پیش توسط taban sw مطرح شد
13 پاسخ

خطای 419 بر روی همه route های post

سلام دوستان تو تمام روت هایی که با پست هستن 419 میگیرم
کلی جستجو کردم برا درست کردنش اما هیچ کدوم جواب نداد .
از دوستان علت به وجود اومدن چنین مشکلی رو میدونن ؟
این مشکل برا خیلیا به وجود اومده گویا اما تمام راه حل هایی که پیشنهاد شده بود رو تست کردم و جواب نگرفتم .


ثبت پرسش جدید
نوید
تخصص : برنامه نویس Go / Django
@navids 4 سال پیش مطرح شد
1

بعد از تگ فرم کد زیر رو قرار بدید:

{{ csrf_field() }}

عرفان همتی
تخصص : Backend Developer
@erfanhemmati 4 سال پیش مطرح شد
1
<form method="POST" action="/profile">
    @csrf
    ...
</form>

احتمالا مشکلتون حل بشه


محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش مطرح شد
0

@navids
@mrerfan.ir
سلام آقا نوید و آقا عرفان
من این کار هایی که گفتید انجام دادم ینی csrf هارو توی فرم گذاشتم ولی هنوز ارور 419 page expired میگیرم
این ارور هم مال هر فرم و روت پست دارم هست چه لاگین چه رجیستر چه فراموشی رمز
علاوه بر اینا کانفیگ و کش پروژه رو هم پاک کردم و همین کار هارو هم با مرورگر کردم بازم ارور میده
دیگه واقعا نمیدونم چه کاری باید بکنم این مشکل حل بشه
لاراول نسخه 7 است و از دو مرورگر کروم و فاکس آخرین ورژن استفاده میکنم


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
0

@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/*',
    ];
}

محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش مطرح شد
0

@mhyeganeh
بله بله این کاری گفتین کردم و فرم به درستی کار کرد البته بغیر از فلش مسیج ها یا همون ارور های فرم که نشون داده نمیشدند که نمیدونم مربوط به همین csrf میشه یا مشکل یجای دیگست!
بنابر این مشکل ارور 419 مال csrf میشه. من درست بعد از تگ فرم csrf@ قرار دادم ولی نمیدونم چرا به درستی کار نمیکنه :(
اگه راه حلی هست مربوط به csrf یا حتی عدم نمایش ارور های فرم ممنون میشم بگین.


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

@rasool
قبلا درست کار میکرده الان دچار مشکل شده؟ یا اینکه کلا تا بحال در پروژه دیگه این کارو انجام دادید یا بار اول و در حال یادگیری هستید؟
نسخه لاراولی که استفاده میکنید چنده؟ توجه داشته باشید که در نسخه های قدیمی دستور @csrf وجود نداشتند و بایستی از کد زیر استفاده می کردید:

{{ csrf_field() }}

در هر دو حال یکبار در صفحه وب کامپلایل شده view page source رو بزنید و ببینید آیا با یک تگ input مثل تگ زیر جایگزین شده یا نه:

<input type="hidden" name="_token" value="yIcHUzipr2Y2McGE3EUk5JwLOPjxrC3yEBetRtlV">

در خصوص flash message هم دلایل خیلی زیادی میتونه داشته باشه و بدون دیدن کد و پروژه نمیشه نظری داد.


محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش مطرح شد
0

@mhyeganeh
بله در این گفتگو کامل توضیح دادم.
من الان برای آپدیت پروژه ای که قبلا کار کرده بودم این ارور رو دریافت میکنم و نسخه لاراول هم از همون اول 7 بوده
با فرم ها هم آشنایی دارم و در پروژه ها ازشون استفاده میکنم
ببینید همچی مرتبه موقعی view page source میگیرم input مربوطه موجوده و با هر رفرش مقدار توکن عوض میشه
برای همین که به نظر خودم هیچ مشکلی توی csrf نیست و میگم شاید این مشکل با مشکل فلش مسیج ها یکی باشه یعنی یک مشکل دیگه باعث این خرابکاری ها و شاید خرابکاری های دیگه ای که من هنوز نفهمیدم شده باشه که ازش بیخبرم


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

@rasool

با این نشونه هایی که میفرمایید به احتمال زیاد مشکل از فرایند ذخیره Session هاتون هست که به هر دلیلی درست انجام نمیشه یا persistant نیستند. چون هم CSRF و هم بحث فلش مسیج ها همون طوری که میدونید در ارتباط مستقیم هستند با این موضوع.

موضوع CSRF رو کلا فراموش کنید فعلا و باید دنبال دیباگ کردن پروژتون در خصوص ذخیره سازی Session ها باشید. مثلا چک کردن SESSION_DRIVER و اینکه آیا صحیح تنظیم شده یا نه.

یک سری به لینک زیر هم بزنید. مفصل صحبت هایی شده درباره اش و آخرش هم متوجه شده دقیقا مشکلش مربوط به Session هاست و راه حلش رو هم توضیح داده:
https://github.com/laravel/framework/issues/26106


محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش آپدیت شد
0

@mhyeganeh
با سلام مجدد من تو این چند روز پروژمو روی یک سیستم دیگه تست کردم اوکی بود ولی روی سیستم خودم ارور داره پس پروژه به درستی کار میکنه
اومدم محتویات پروژه رو ....views controllers رو بردم توی یک لاراول جدید دیدم اونجا هم همین ارور هست
دیگه به این نتیجه رسیدم که لاراول مشکلی نداره و شاید زمپ به مشکل خورده برای همین زمپ رو حذف و مجدد نصب کردم
ولی در کمال ناباوری دیدم هنوز ارور پابرجاست :(
دیگه واقعا گیر کردم نمیدونم مشکل چی میتونه باشه ولی مطمعن شدم پروژه اوکیه چون هم روی یک سیستم دیگه ران شد هم برای خودم توی یک پروژه جدید ارور داد


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

@rasool

یک احتمال دیگه که قوی تر از بقیه هم هست اینه که مشکل از مرورگرتون باشه. چک کنید که ذخیره سازی Cookie ها برای اون دامنه فعال باشه (بلاک نشده باشه) با مرورگرهای دیگه هم امتحان کردید آیا؟

غیر از این دو موردی که اشاره کردید چک کنید که آیا اصلا میتونید یک کوکی رو در مرورگر کاربر ذخیره کنید و این طرف ببینیدش یا نه...؟
بعد چک کنید که میتونید یک داده ای رو در Session کاربر قرار بدید و بعد بگیریدش یا نه.
مرحله به مرحله این اقدامات رو انجام بدید تا به سرنخ اصلی برسید. اگر Session ها ذخیره نمیشدند از Driver های دیگه لاراول مثل فایل یا دیتابیس استفاده کنید و مجدد تست کنید.

و اینکه پروژتون رو یکبار روی هاست/سرور قرار بدید و چک کنید مشکل برطرف میشه یا نه؟

تمامی مواردی که عرض کردم رو مرحله به مرحله پیش برید و تست کنید. انشالله که برطرف میشه مشکلتون.


damandarya
@amir.d79 4 سال پیش مطرح شد
0

@rasool
سلام وقت خوش این مشکلتون حل شد
اگه حل شده میشه بگید چجوری ؟ منم این مشکل رو دارم و روی لوکالم جواب میده ولی روی هاست به مشکل میخورم


سهیل حیدری
@hbr 4 سال پیش مطرح شد
0

@swtaban

با ajax درخواست بزنید و مشخصه زیر رو در header درخواستتون set کنید.

'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

محمدرسول ضیاءالدینی
تخصص : full stack developer
@rasool 4 سال پیش مطرح شد
0

@amir.d79
با سلام و وقت بخیر
بله من مشکلم حل شد و راجبش در https://roocket.ir/discuss/10937 صحبت کردم
البته من مشکلم فرق میکرد (خیلی عجیب بود) نه لوکال کار میکرد نه روی هاست ولی مشکل شما که میگین لوکال خوبه پس احتمالا با پاک کردن حافظه سشن ها در هاست این مشکل برطرف میشه چون همونطور که میدونین اینچنین ارور هایی مربوط به سشن ها هستند
برای این کار هم کافیه نسخه php هاستتون رو یک بار تغییر بدین و بعد برگردونین به نسخه ای که درحال حاضر هست اینطوری حافظه سشن پاک میشه و احتمال زیاد درست میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام