Tamim Fahed نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 بفرض لدي المسار التالي لطلب بعض المعلومات من خادم الويب: http://mywebsite.com/test/test2 وأرغب بالحصول على هذا المسار كاملاً فقمت بوضع مسار التوجيه هذا ضمن express: app.get('/test/test2', function (req, res) { let url = req.url; } ولكنني أحصل فقط على /test و /test2 بشكل معزول. كيف يمكنني الحصول على كامل المسار الذي تم طلبه من قبل العميل؟ 1 اقتباس
1 محمد أبو عواد نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 يمكنك استخدام الامر التالي للحصول على الرابط بشكل كامل var url = req.protocol + '://' + req.get('host') + req.originalUrl; اقتباس
1 Sam Ahw نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 نحصل على هذه المعلومات وغيرها من خلال الطلب نفسه req الذي يقوم بتفسيره إطار العمل express مما يمكننا من استخدامه بشكل مباشر ضمن الكود. يتم الوصول إلى البروتوكول المستخدم في الاتصال عبر express من خلال: req.protocol أما قبل النسخة الثالثة من express فيكون البروتوكول ثابت دوماً كـ http إلا إذا تم ذكر السطر البرمجي التالي ضمن الكود بالتالي سيكون https: req.get('X-Forwarded-Protocol') أما المضيف host فيمكن الحصول عليه من خلال: req.get('host') وفي حال لم ترغب بتجميع هذه العناصر مع بعضها البعض، يمكنك ببساطة استخدام API الذي يقدمها node.js الخاصة بالمسارات بالشكل التالي: var url = require('url'); function getFullURL(req) { return url.format({ protocol: req.protocol, host: req.get('host'), pathname: req.originalUrl }); } وبعدها يمكنك استدعاء التابع السابق بشكل مباشر عند الحاجة. اقتباس
1 عبدالباسط ابراهيم نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 بالطبع يمكنك الحصول على ال url كما في التعليقات السابقة من خلال var url = req.protocol + '://' + req.get('host') + req.originalUrl; ولكن حتى يكون ال req.get('host') صحيح بدون أي مشاكل أو يقوم بإرجاع النتائج المتوقعة يجب أن تقوم ب إضافة الكود التالي في ملف ال app.js app.set('trust proxy', 'loopback'); لمعالجة النتائج الغير متوقعة من ال proxies تحديد ال X-Forwarded-Host في إعدادات السيرفر في nginx server { listen myhost:80; server_name myhost; location / { root /path/to/myapp/public; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://myapp:8080; } } وال apache <VirtualHost myhost:80> ServerName myhost DocumentRoot /path/to/myapp/public ProxyPass / http://myapp:8080/ ProxyPassReverse / http://myapp:8080/ </VirtualHost> اقتباس
السؤال
Tamim Fahed
بفرض لدي المسار التالي لطلب بعض المعلومات من خادم الويب:
http://mywebsite.com/test/test2
وأرغب بالحصول على هذا المسار كاملاً فقمت بوضع مسار التوجيه هذا ضمن express:
app.get('/test/test2', function (req, res) { let url = req.url; }
ولكنني أحصل فقط على /test و /test2 بشكل معزول.
كيف يمكنني الحصول على كامل المسار الذي تم طلبه من قبل العميل؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.