اذهب إلى المحتوى

السؤال

نشر

لدي API مبنية بواسطة لارافيل وتتصل مع تطبيق Angular موجود على اسم نطاق وخادم ويب مختلف. أحاول استخدام Sanctum للتحقق من الطلبات المستقبلة من Angular ولكنها لا تحوي CSRF Token ولذلك احصل على الخطأ:

CSRF token mismatch error

حاولت إرسال طلب التحقق من المستخدم للخادم كالتالي:

this.http.get('sanctum/csrf-cookie')
    .pipe(
        switchMap(result => this.http.post('auth/login', {'email': email, 'password': password}))
    );

ولكن لم تعالج المشكلة

Recommended Posts

  • 2
نشر

المشكلة تحدث هنا لأن متصفح الويب أو تطبيق Angular سيقوم فقط بإرفاق الـ cookie للطلبات التي تنتمي لنفس اسم النطاق التي يتم عبره استقبال الطلبات.

لحل هذه المشكلة أولاً تأكد من أنك تقوم باستخدام relative routes فمثلاً بدلاً من:

 /api/sanctum/crsf 

نقوم بكتابة:

http://example.com/sanctum/crsf

ثم يجب عليك إعداد خصائص البروكسي ضمن ملف proxy.conf.json ونضعه في المجلّد الجذر للمشروع:

{
    "/api/*": {
      "target": "http://example.ocm",
      "secure": false,
      "changeOrigin": true,
      "logLevel": "debug",
      "pathRewrite": {
        "^/api": ""
      }
    }
}

ثم نقوم بتعديل الملف angular.json:

"architect": {
    ...
    "serve": {
        ...
        "options": {
            ....
            "proxyConfig": "proxy.conf.json"
        }
    }
}

ثم أخيراً في ملف .env نقوم بالتعديلات التالية للتأكد من أن sanctum يقوم بالتعرف على الطلبات وإرفاق cookies معها:

SANCTUM_STATEFUL_DOMAINS=localhost,.example.com
SESSION_DRIVER=cookie
SESSION_DOMAIN=localhost

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...