ما هو تشفير URL؟ شرح Percent-Encoding
إجابة سريعة
تشفير URL = %XX للأحرف غير الآمنة. %20 = مسافة، %E2%82%AC = €. encodeURIComponent للمعاملات، encodeURI لعناوين كاملة. استخدم أداة تشفير URL المجانية في متصفحك.
مقدمة
تشفير URL (percent-encoding) يحول الأحرف غير الآمنة في URL إلى %XX حيث XX هو كود الحرف الست عشري. ضروري لأن URL يمكن أن تحتوي فقط على أحرف ASCII. الأحرف غير ASCII (مثل العربية أو €) تشفر كـ UTF-8 multi-byte ثم percent-encoded.
خطوة بخطوة
-
افهم الأحرف التي تحتاج إلى تشفير
الأحرف غير المحفوظة (A-Z، a-z، 0-9، -، _، .، ~) لا تحتاج إلى تشفير. الأحرف المحجوزة (:، /، ?، #، [، ]، @، !، $، &، '، (، )، *، +، ,، ;، =) لها معنى خاص في URLs ويجب ترميزها عند استخدامها كبيانات. يجب ترميز جميع الأحرف الأخرى (المسافات وعلامات الاقتباس وغير ASCII).
-
تعرف على آلية التشفير
يتم تحويل كل حرف يحتاج إلى تشفير إلى تسلسل بايت UTF-8 الخاص به، ثم يتم تمثيل كل بايت كـ %XX حيث XX هي القيمة السداسية. مسافة (0x20) → %20. الحرف غير ASCII 'é' (UTF-8: 0xC3 0xA9) → %C3%A9.
-
التمييز بين encodeURI وencodeURIComponent
يقوم encodeURI() بترميز URL كاملًا ولكنه يحتفظ بالأحرف المحجوزة (:/?&=) التي تعد جزءًا من بنية URL. يقوم encodeURIComponent() بتشفير كل شيء باستثناء الأحرف غير المحفوظة - استخدمه لقيم معلمات الاستعلام حيث تكون الأحرف المحجوزة عبارة عن بيانات وليست بنية.
-
فك تشفير النسبة المئوية URLs
يؤدي فك التشفير إلى عكس التشفير: %20 → space، %C3%A9 → é. استخدم decodeURI() لـ URLs الكامل وdecodeURIComponent() لقيم معلمات الاستعلام. تسلسلات الهروب غير الصالحة (مثل %ZZ) تؤدي إلى حدوث أخطاء.
أمثلة
تشفير الفضاء
مدخل: hello world
الإخراج: hello%20world
تشفير نص غير ASCII
مدخل: café
الإخراج: caf%C3%A9
ترميز قيمة معلمة الاستعلام
مدخل: name=John Doe & Co.
الإخراج: name%3DJohn%20Doe%20%26%20Co.
المشاكل الشائعة
- تشفير URL بالكامل عندما تكون القيم فقط هي التي تحتاج إلى تشفير — تشفير قيم معلمات الاستعلام، وليس بنية URL (://?&=).
- التشفير المزدوج - إذا تم ترميز URL بالفعل، فسينتج التشفير مرة أخرى %2520 بدلاً من %20. قم بفك التشفير أولاً إذا لم تكن متأكدًا مما إذا كان قد تم ترميزه بالفعل.
- استخدام encodeURI مقابل encodeURIComponent بشكل غير صحيح —يحتفظ encodeURI بأحرف البنية URL؛ يقوم encodeURIComponent بتشفيرها. استخدم الأخير لقيم معلمات الاستعلام.
- تسلسلات الهروب غير الصالحة —%ZZ أو % واحد في النهاية غير صالحة وستؤدي إلى حدوث أخطاء عند فك التشفير.
نصائح
- قم دائمًا بتشفير قيم معلمات الاستعلام التي قد تحتوي على مسافات أو أحرف خاصة أو إدخال المستخدم لمنع إدخال URL.
- استخدم encodeURIComponent() لقيم معلمات الاستعلام، وencodeURI() لـ URLs الكامل الذي يحتاج فقط إلى أحرف غير آمنة مشفرة.
- تشفير URL ليس تشفيرًا - يمكن لأي شخص فك تشفيره. لا تستخدمه أبدًا لإخفاء البيانات الحساسة.
- استخدم برنامج التشفير ووحدة فك التشفير URL الخاص بنا للتحويل الفوري والخاص في متصفحك.