ممّ تتكوّن الروابط (URL)
الرابط (URL) تعليمات مدمجة لجلب مورد أو تحديد موقعه: أي بروتوكول، أي خادم، أي مسار، وأي معاملات. المحلّلات تعامل بعض الأحرف كبنية؛ البيانات التي تحتويها يجب ترميزها وإلا ينكسر الرابط. فهم كل جزء يساعد على تصحيح التوجيه ومفاتيح الذاكرة المؤقتة والتحليلات وإعادات التوجيه المفتوحة قبل أن تصبح حوادث.
6 دقائق قراءة · آخر تحديث 2026-10-04

URI وURL وURN
URI (Uniform Resource Identifier) المصطلح الشامل. URL (Uniform Resource Locator) يصف كيفية الوصول إلى مورد — https://example.com/page رابط URL. URN يسمّي مورداً بلا موقع (urn:isbn:978-…). في تطوير الويب اليومي يُستخدمان «URL» و«URI» غالباً بالتبادل لعناوين http(s)، لكن المواصفات تميّز بين الاسم والموقع. يجب أن تخزّن API والسجلات روابط canonical بترميز متسق.
مثال مشروح
https://www.example.com:443/products/item?id=42&color=blue%20green#reviews
Full URL: https://www.example.com:443/products/item?id=42&color=blue%20green#reviews
01 · المخطط
https://
البروتوكول مع فاصل السلطة؛ https يعني TLS والمنفذ الافتراضي 443 عند حذفه.
02 · النطاق الفرعي
www.
تسميات المضيف يسار النطاق القابل للتسجيل؛ ما زالت جزءاً من السلطة في ترويسة Host.
03 · المضيف
example.com
اسم DNS أو IP يحلّه العميل قبل فتح الاتصال.
04 · المنفذ
:443
اختياري؛ مذكور هنا للتعليم — المتصفحات غالباً تخفي منفذ https الافتراضي في شريط العنوان.
05 · المسار
/products/item
مسار هرمي للمورد على الخادم؛ يظهر في سطر طلب HTTP (مع الاستعلام).
06 · الاستعلام
?id=42&color=blue%20green
معاملات مفتاح–قيمة بعد ?؛ المسافات تُرمَّز %20 (أو + في بعض أجسام النماذج — ليس تبادلياً دائماً).
07 · الجزء
#reviews
مرساة جانب العميل فقط؛ لا تُرسل إلى الأصل في جلب مستند نموذجي.
ربط الأجزاء الملوّنة يعيد الرابط كاملاً. userinfo (user:pass@) محذوف هنا — المتصفحات الحديثة تقلّل بروزه في روابط التصفح.
دور كل جزء في HTTP
| المكوّن | يُرسل إلى الأصل؟ | فخ شائع |
|---|---|---|
| المخطط | بشكل غير مباشر (TLS مقابل cleartext) | موارد http على صفحات https |
| السلطة (مضيف + منفذ) | ترويسة Host (+ منفذ إن لم يكن افتراضياً) | base URL خاطئ في SPA وروابط البريد |
| المسار + الاستعلام | سطر الطلب | ? مزدوج حين لا يُرمَّز رابط متداخل بـ encodeURIComponent |
| الجزء | لا | توقع أن #section يصل لتوجيه جانب الخادم |
تحليل الرابط كاملاً
فصل المخطط والسلطة والمسار والاستعلام والجزء
سطر طلب HTTP
Method + path + query + إصدار HTTP
ترويسة Host
مضيف السلطة (والمنفذ إن لم يكن افتراضياً)
إسقاط الجزء
#syntax لا يغادر المتصفح لجلب الشبكة
تمرير العرض
بعد الاستجابة، القفز إلى id=syntax إن وُجد في HTML
الأجزاء تمكّن مراسي داخل الصفحة دون رحلات إلى الخادم.
المخطط والمنافذ الافتراضية
مخططات شائعة
| المخطط | المنفذ الافتراضي | استخدام نموذجي |
|---|---|---|
| http | 80 | HTTP صريح (legacy؛ إعادة توجيه إلى https على المواقع الحديثة) |
| https | 443 | HTTP عبر TLS — الافتراضي لتطبيقات الويب |
| ws / wss | 80 / 443 | WebSockets؛ wss مغلّف بـ TLS |
| mailto | — | يفتح عميل بريد مع معاملات العنوان |
| file | — | وصول ملف محلي؛ قواعد sandbox خاصة في المتصفحات |
حذف المنفذ يعني «استخدم الافتراضي لهذا المخطط». :8080 صريح يلغي الافتراض عندما تستمع خوادم التطوير على منفذ غير قياسي.
المسار والاستعلام وفخاخ التحليل
أجزاء المسار مفصولة بـ /. الشرطة النهائية قد تهم الذاكرة المؤقتة والمضيفات الثابتة — اختر شكلاً canonical واحداً. سلاسل الاستعلام تبدأ بـ ? وتستخدم & بين الأزواج؛ المفاتيح والقيم بـ =. ?key= فارغ يرسل key بقيمة فارغة؛ ?key وحده قد يُعامل بشكل مختلف حسب الأُطر. مفاتيح مكررة (?tag=a&tag=b) صالحة؛ كود الخادم يقرّر الأول أو الأخير أو الجمع.
الروابط النسبية تُحلّ مقابل base (RFC 3986). رابط href="guides/foo" على https://example.com/docs/ يصبح https://example.com/docs/guides/foo — تظهر أخطاء حين يكون base خاطئاً في البريد أو SPA.
ترميز النسبة (URL encoding)
أحرف محجوزة — مسافة و& و= و? و# و+ و/ وغيرها — لها أدوار بنيوية. حين تظهر داخل البيانات (مصطلحات بحث، أسماء ملفات)، رمّزها % متبوعاً برقمين hex. المسافة غالباً %20؛ + في سلاسل الاستعلام كان تاريخياً مسافة في application/x-www-form-urlencoded — لا تفترض تبادل + و%20 في كل طبقة.
const q = "rock & roll";
encodeURIComponent(q); // "rock%20%26%20roll"
// Use encodeURIComponent for query VALUES;
// encodeURI for full URLs without breaking structure.أسماء نطاق دولية ومسارات
أسماء مضيف Unicode تظهر punycode (xn--…) في DNS. المسارات قد تحتوي Unicode UTF-8 مرمّزاً بالنسبة حين يسمح الخادم والإطار بـ IRI. التطبيع وهجمات homograph ( «a» سيريلية مقابل «a» لاتينية ) مخاوف أمنية — المتصفحات تطبّق same-origin على أشكال punycode.
الأصل وقواعد same-site
الأصل (origin) يجمع المخطط والمضيف والمنفذ. cookies وCORS وسياسات fetch تعتمد على الأصل — لا بادئة المسار فقط. صفحة على https://app.example.com/settings وAPI على https://api.example.com أصلان مختلفان حتى على نفس النطاق القابل للتسجيل؛ الاستيلاء على subdomain يكسر الافتراضات إن أُهمل DNS.
اعتبارات أمنية
الروابط تنقل وتهاجم. لأنها تظهر في شريط العنوان والبريد والتحليلات وسجلات الخادم، فروق تحليل صغيرة بين framework وCDN وWebView جوال تصبح ثغرات تفويض. عامل كل هدف إعادة توجيه وcallback URL وwebhook كإدخال غير موثوق حتى تحلّله بAPI واعٍ بالمواصفات وتقارن الأصل والمسار والشكل المرمّز مع allowlist.
- Open redirects: تحقق من next= مقابل allowlist مسارات أو مضيفين.
- روابط javascript: javascript:… في href قد ينفّذ سكربتاً؛ امنعها في روابط من المستخدمين.
- Mixed content: صفحات https تحمّل موارد http تضعف ضمانات TLS.
- بيانات حساسة في الاستعلام: الروابط تصل إلى السجلات وReferer والسجل — فضّل POST أو ترويسات للرموز.
- ترميز طويل: %252F double-encoding يتجاوز مرشحات ساذجة — طبّع قبل فحوص التفويض.
- تصيّد userinfo: https://evil.com@trusted.com/ قد يبدو trusted.com في الواجهة — المتصفحات الحديثة تقلّل بروز userinfo.
SSRF والمضيفات الداخلية
كود خادم يجلب URL من المستخدم (بطاقات معاينة، مستوردون، webhooks) قد يُخدَع لاستدعاء http://127.0.0.1 أو نقاط metadata أو عناوان RFC 1918 خاصة. امنع link-local وloopback بعد التحليل؛ لا تعتمد على contains string لـ localhost. same-origin policy تحمي المتصفحات؛ الخوادم ليس لديها ذلك افتراضياً.
نمط أكثر أماناً
- 1
تحليل بـ URL API
new URL(input, base) في JS حديث
- 2
Allowlist مضيف/مسار
قارن الأصل بعد التطبيع
- 3
ترميز البيانات الصادرة
encodeURIComponent على القيم فقط
- 4
تسجيل روابط مُنقّحة
احذف الرموز ومعرّفات الجلسة من التحليلات
نمط خطر
- 1
ربط نصوص
بناء روابط بـ ? و & يدوياً
- 2
مرشحات blacklist
حظر سلاسل حرفية فقط
- 3
فك ترميز مرتين بلا ضبط
قبول ترميز overlong
- 4
أسرار في الاستعلام
مفاتيح API ظاهرة في تسريبات Referer
الحل النسبي في التطبيقات
تطبيقات الصفحة الواحدة وقوالب البريد تُرسل روابط نسبية. حل RFC 3986 يدمج مرجعاً نسبياً مع base URL: ../api/v1/users من https://example.com/app/dashboard/ يصبح https://example.com/app/api/v1/users عند تطبيع الأجزاء. وسوم base خاطئة في HTML أو basename للموجّه خاطئ ينتج 404 تبدو كأخطاء خادم لكنها أخطاء جبر URL في العميل.
const base = "https://example.com/app/page";
const rel = "../api/items?q=1";
console.log(new URL(rel, base).href);
// "https://example.com/app/api/items?q=1"أدوات ومواصفات متوافقة
url-encoder وurl-decoder في SmartKitio يعملان في المتصفح لترميز مصطلحات البحث وnext= متداخلة وأجزاء مسار non-ASCII دون تخمين الأحرف المحجوزة. حين يرجع رابط malformed 404 أو 400، http-status-lookup يشرح الرمز بينما تقسّم الرابط بـ new URL() — المخطط والمضيف والمسار وsearchParams يجب فحصها على حدة لا كسلسلة واحدة معتمة.
قراءة إضافية
مقالات ذات صلة

التقنية
ماذا يحدث حين تُدخل رابطاً؟
مسار خطوة بخطوة من ضغطة المفتاح إلى أول رسم، يشمل DNS وTLS وإعادات التوجيه والتخزين المؤقت.
7 دقائق قراءة · 2026-10-04
اقرأ المقال
البرمجة
الترميز مقابل التشفير: ما الفرق؟
الترميز والتشفير والتجزئة والضغط يحلّ كلٌّ منها مشكلة مختلفة. الخلط بينها — خاصة Base64 والسرية — يسبب إخفاقات أمنية حقيقية.
5 دقائق قراءة · 2026-10-04
اقرأ المقال
البرمجة
ما هي واجهة البرمجة (API) وكيف تعمل؟
واجهات البرمجة عقود بين البرامج. واجهات HTTP JSON هي الوجه الأبرز — الطرق والترويسات والأجسام ورموز الحالة والمصادقة وإصدارات الواجهة موضّحة هنا.
7 دقائق قراءة · 2026-10-04
اقرأ المقال
الويب
المعالجة في جانب العميل مقابل جانب الخادم
مكان تنفيذ الحساب يحدّد الخصوصية والكمون والتكلفة والثقة. خريطة عملية لعمل المتصفح مقابل عمل الخادم — وماذا تفعل التطبيقات الهجينة فعلياً.
5 دقائق قراءة · 2026-10-04
اقرأ المقال
