ترميز معاملات سلسلة الاستعلام بشكل صحيح
للأداة وضعان. وضع «المكون» (encodeURIComponent) مخصص لاسم معامل أو قيمته، ووضع «عنوان URL الكامل» (encodeURI) لعنوان URL كامل بنيته صحيحة أصلًا. الخلط بينهما هو السبب الأكثر شيوعًا لتعطل سلاسل الاستعلام.
مثال محلول
يُبقي وضع «عنوان URL الكامل» الرمز & داخل القيمة، فيقرأ الخادم معاملين بدلًا من معامل واحد.
- المدخل
- https://example.com/search?q=salt & pepper&page=2
- النتيجة ·
encodeURI() - https://example.com/search?q=salt%20&%20pepper&page=2
المعاملات التي يقرؤها الخادم
- "q" = "salt "
- " pepper" = ""
- "page" = "2"
ترميز القيمة أولًا في وضع «المكون» يُبقيها معاملًا واحدًا.
- المدخل
- salt & pepper
- النتيجة ·
encodeURIComponent() - salt%20%26%20pepper
https://example.com/search?q=salt%20%26%20pepper&page=2
المعاملات التي يقرؤها الخادم
- "q" = "salt & pepper"
- "page" = "2"
مقارنة وضع «المكون» ووضع «عنوان URL الكامل» حرفًا بحرف
| الحرف | المكون | عنوان URL الكامل |
|---|---|---|
| : | %3A | : |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| & | %26 | & |
| = | %3D | = |
| + | %2B | + |
| ␠ | %20 | %20 |
| é | %C3%A9 | %C3%A9 |
كيف تتعامل الأداة مع ذلك
- رمّز اسم كل معامل وقيمته كلًّا على حدة في وضع «المكون»، الذي يهرّب & = ? # + و/.
- اربط الأزواج المرمّزة بصيغة الاسم=القيمة مع & بينها، ثم أضف الناتج بعد ? في عنوان URL.
- استخدم وضع «عنوان URL الكامل» مع عنوان URL كامل فقط: فهو يُبقي : / ? # & = + كما هي، ولذلك لا يحمي قيمة تحتوي عليها.