الدليل الشامل لترميز عناوين URL
تعرّف على كل ما يخص ترميز عناوين URL: ما هو، ولماذا يهم، وكيف يعمل الترميز بالنسبة المئوية (percent-encoding)، وأفضل الممارسات للتعامل مع الأحرف الخاصة في العناوين.
نصائح وأدلة وأفضل الممارسات في ترميز الروابط URL وتطوير الويب.
تعرّف على كل ما يخص ترميز عناوين URL: ما هو، ولماذا يهم، وكيف يعمل الترميز بالنسبة المئوية (percent-encoding)، وأفضل الممارسات للتعامل مع الأحرف الخاصة في العناوين.
مقارنة تفصيلية بين دالتي encodeURIComponent() و encodeURI() في جافاسكريبت مع أمثلة وأفضل الممارسات.
استكشف وأصلح خطأ "URIError: URI malformed" الشائع في JavaScript من خلال حلول عملية.
مرجع شامل لترميز الرموز الخاصة في الروابط بما في ذلك المسافات وعلامة العطف والـ unicode والمزيد.
أتقِن ترميز عناوين URL في تطوير واجهات REST API. تعلّم كيفية ترميز معاملات الاستعلام ومقاطع المسار بشكل صحيح وبناء واجهات API موثوقة.
تقوم encodeURI بترميز عنوان URL كامل مع الحفاظ على الأحرف البنيوية مثل / و ? و #. أما encodeURIComponent فتقوم بترميز مكوّن واحد من الـ URI، فترمّز جميع الأحرف الخاصة بما في ذلك / و ? و &. استخدم encodeURIComponent لقيم معاملات الاستعلام و encodeURI لعناوين URL الكاملة.
يحوّل ترميز URL (النسبة المئوية) الأحرف الخاصة في الروابط إلى صيغة %XX وفقًا لمعيار RFC 3986. أما ترميز Base64 فيحوّل البيانات الثنائية إلى سلسلة نصية باستخدام 64 حرفًا من أحرف ASCII وفقًا لمعيار RFC 4648. لكل منهما غرض مختلف، وهما غير قابلين للتبديل فيما بينهما.
جدول مرجعي شامل لأحرف URL المُرمَّزة. يغطي جميع أحرف ASCII القابلة للطباعة (32-126)، وأحرف Unicode الشائعة، وما يقابلها من ترميز النسبة المئوية (percent-encoding) كما هو مُعرَّف في RFC 3986.
يعتمد ترميز الروابط في بايثون على الدالة urllib.parse.quote() لتطبيق percent-encoding على النصوص، وعلى الدالة urllib.parse.urlencode() لترميز القواميس إلى سلاسل استعلام. يغطي هذا الدليل الدوال quote() و unquote() و urlencode() و parse_qs() مع أمثلة عملية.
ترميز النسبة المئوية (Percent encoding) هو آلية مُعرّفة في معيار RFC 3986 لترميز المحارف الخاصة داخل معرّفات URI عبر استبدالها بعلامة نسبة مئوية (%) متبوعة برقمين ست عشريين. يضمن هذا الترميز أن تحتوي عناوين URL على محارف ASCII صالحة فقط يمكن نقلها بأمان عبر الإنترنت.
%20 هو ترميز percent-encoding القياسي لحرف المسافة وفقًا لمعيار `RFC 3986`، ويجب استخدامه في مسارات الروابط ومعظم السياقات. أما علامة + فتمثّل المسافة فقط في تنسيق `application/x-www-form-urlencoded` المستخدَم عند إرسال نماذج HTML وبعض سلاسل الاستعلام.
توفّر لغة JavaScript الدالة decodeURIComponent() لفك ترميز مكوّنات URI الفردية، والدالة decodeURI() لفك ترميز عناوين URI الكاملة. استخدم try-catch للتعامل مع عناوين URI المشوّهة. كما توفّر واجهتا URL و URLSearchParams بدائل أكثر أماناً لتحليل عناوين URL.
يجب ترميز معاملات الاستعلام في واجهات REST API باستخدام percent-encoding وفقًا لمعيار RFC 3986 لتضمين الأحرف الخاصة مثل &, =, والمسافات وأحرف Unicode بأمان. استخدم encodeURIComponent() في JavaScript، أو urllib.parse.quote() في Python، أو URLEncoder.encode() في Java.
يحوّل ترميز كيانات HTML الأحرف مثل <، و>، و&، و" إلى كيانات HTML (<، و>، و&، و") لعرضها بأمان في صفحات الويب. أما ترميز URL فيحوّل الأحرف إلى صيغة %XX لنقلها بأمان داخل عناوين URL. ويحمي كل منهما من أنواع مختلفة من الهجمات ويُستخدم في سياقات مختلفة.
يظهر خطأ ERR_INVALID_URL في Node.js عندما يستقبل مُنشئ URL أو الدالة url.parse() سلسلة نصية ليست عنوان URL صالحًا. ومن أكثر الأسباب شيوعًا غياب البروتوكول، ووجود رموز خاصة غير مُرمَّزة، وترميز percent-encoding غير سليم. ويمكن إصلاحه عبر التحقق من صحة المُدخلات وترميز الرموز الخاصة قبل التحليل.