فهم رمز الحالة 419 لطرق POST وPUT في Laravel API
عند تطوير واجهة برمجة تطبيقات RESTful باستخدام Laravel، من الشائع مواجهة 419 رمز الحالة لطرق POST وPUT. يحدث هذا الخطأ بسبب عملية التحقق من رمز CSRF المميز في Laravel.
في Laravel 5.4 والإصدارات السابقة، يتم تمكين رموز CSRF المميزة لجميع الطلبات، بما في ذلك أساليب POST وPUT. وذلك لحماية التطبيق من هجمات تزوير الطلبات عبر المواقع (CSRF). افتراضيًا، تُضاف رموز CSRF المميزة إلى العرض كحقول مخفية داخل النماذج.
عند إرسال طلب POST أو PUT، تتوقع Laravel تلقي رمز CSRF صالحًا مع بيانات الطلب. إذا لم يتم العثور على رمز مميز صالح، فسيقوم Laravel بإنشاء استثناء "419 CSRF token notmatch" ويعيد استجابة رمز الحالة 419.
استبعاد المسارات من حماية CSRF
إلى لحل هذه المشكلة، يمكنك استبعاد مسارات معينة من التحقق من رمز CSRF. في Laravel 5.5 والإصدارات الأحدث، يمكنك استخدام ملف api.php بدلاً من web.php لمسارات واجهة برمجة التطبيقات، ولا يتم تمكين التحقق من CSRF افتراضيًا.
إذا كنت تستخدم web.php لمسارات واجهة برمجة التطبيقات، فيمكنك يمكن استبعادهم من التحقق من رمز CSRF عن طريق إضافة معرفات URI الخاصة بهم إلى خاصية $except الخاصة بالبرنامج الوسيط VerifyCsrfToken. على سبيل المثال:
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'/api/*',
];
}
سيؤدي هذا إلى استبعاد جميع المسارات التي تبدأ بـ /api من التحقق من رمز CSRF.
الحل البديل للمسارات غير API
في حالة استبعاد المسارات من حماية CSRF ليست مناسبة، يمكنك تعطيل التحقق من CSRF لطرق محددة داخل مجموعة المسار. على سبيل المثال:Route::group(['middleware' => 'web'], function () {
Route::post('/my-route', 'MyController@store')->withoutMiddleware('verify-csrf-token');
});
سيؤدي هذا إلى تعطيل التحقق من رمز CSRF لطلب POST إلى /my-route. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3