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

السؤال

نشر

السلام عليكم 

نقوم بعمل مشروع الفرونت اند باستخدام next.js والباك اند باستخدام php laravel، ولكن عند تسجيل حساب جديد يعتمد الباك اند على أنني سأقوم باستلام الjwt ووضعها في الheaders أثناء عملية الpost لكنني لا استطيع الوصول إلى قيمة الjwt فدائماً تكون ب null.

هل يوجد طريقة غير الطريقة التالية أثناء الfetch 

Let token = response.header.get("Set-Cookie")

هذه الطريقة شائعة جدا وجدتها في كثير من المواقع لكن قيمتها دائماً null

وشكراً لكم على الإجابة على أسئلتي السابقة وبارك الله بكم جميعاً.

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته .

المشكلة تكمن فى جزء الباك اند حيث ان هذه جزء من التقيديات الخاصة بال Cors.

فعندما تستخدم  Fetch API على ال CORS حيث لا يكون الطلب من نفس الموقع فانه يحدث تقيد للheaders التى بمكنك قرائتها . ويمكنك فقط قراءة التالى .

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

ولن يمكنك قراءة اى شئ اخر من ال headers . 

response.headers.forEach(function(val, key) { console.log(key + ' ----- ' + val); });

واذا قمت بتنفيذ هذا الكود الذى سيطبع ال headers المرسلة من الخادم لن تجد بداخلها ال jwt لان ليس لك الصلاحية لقرائته بسبب ال cors كما وضحت سابقا.

والحل هو ارسال ال jwt فى ال body الخاص بال response و قراءته من ال body فى الواجهة الامامية وليس من ال headers .

ويوجد حل اخر ولكنه ليس امن ومن الافضل عدم استخدامه .

قم بالذهاب الى ملف config\cors.php تاكد من ان allowed_origins تساوى * .

وبداخل exposed_headers قم باضافة Set-Cookie او على حسب الاسم الذى ستضع فيه ال jwt وذلك ليمكنك من قراءته فى الواجهة الامامية.

ولكن كما وضحت لك فان هذه الطريقة ليست امنه وستصيب الموقع الخاص بثغرات تمكن المهاجمين من قراءة المعلومات الخاصة بالمستخدمين. 

لذلك الحل الاول هو الافضل وهو ما ارشحه لك لاستخدامه

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...