[html] هل عنوان URL مسموح به لاحتواء مسافة؟


Answers

لماذا يجب ترميزها؟ يبدو الطلب كما يلي:

GET /url HTTP/1.1
(Ignoring headers)

هناك 3 حقول مفصولة بمسافة بيضاء. إذا وضعت مساحة في عنوان url الخاص بك:

GET /url end_url HTTP/1.1

لديك 4 حقول ، سيخبرك خادم HTTP أنه طلب غير صالح.

GET /url%20end_url HTTP/1.1

3 حقول => صالحة

ملاحظة: في سلسلة الاستعلام (بعد؟) ، يتم عادةً ترميز مسافة كـ +

GET /url?var=foo+bar HTTP/1.1 

بدلا من

GET /url?var=foo%20bar HTTP/1.1 
Question

هل يُسمح بـ URI (على وجه التحديد عنوان URL الخاص بـ HTTP) أن يحتوي على حرف مسافات واحد أو أكثر؟ إذا كان يجب تشفير عنوان URL ، فهل هو + مجرد اتفاقية متبعة بشكل شائع ، أم بديل قانوني؟

على وجه الخصوص ، هل يمكن لشخص أن يشير إلى RFC يشير إلى أنه يجب تشفير عنوان URL مع مسافة؟

الدافع للسؤال: أثناء الاختبار التجريبي لأحد مواقع الويب ، لاحظت أن بعض عناوين URL قد تم بناؤها بمسافات فيها. بدا فايرفوكس للقيام بالشيء الصحيح ، الذي فاجأني! ولكني أردت أن أتمكن من توجيه المطورين إلى RFC بحيث يشعرون بالحاجة إلى إصلاح عناوين URL هذه.




سيعرض Firefox 3 %20 s في عناوين URL كمسافات في شريط العناوين.




هل يمكن لأي شخص أن يشير إلى RFC مشيرا إلى أنه يجب تشفير عنوان URL مع مسافة؟

يتم تعريف URIs ، وبالتالي URLs ، في RFC 3986.

إذا نظرت إلى القواعد النحوية المحددة هناك ، فستلاحظ لاحقًا أن حرف المسافة لا يمكن أبدًا أن يكون جزءًا من عنوان URL قانوني ، بما أن مصطلح "عنوان URL بمسافة" هو تناقض في حد ذاته.




للإجابة على سؤالك. يمكنني القول أنه من الشائع إلى حد كبير أن تستبدل التطبيقات مسافات في القيم سيتم استخدامها في عناوين URL. السبب في ذلك هو عادةً لتجنب ترميز النسبة المئوية للقراءة (URI) الأكثر صعوبة التي تحدث.

تحقق من مقالة wikipedia حول Percent-encoding .




يتم تعريف عناوين URL في RFC 3986 ، على الرغم من أن RFCs أخرى ذات صلة أيضًا ولكن RFC 1738 قديمة.

قد لا يكون لديهم فراغات فيها ، بالإضافة إلى العديد من الشخصيات الأخرى. وبما أن تلك الأحرف الممنوعة تحتاج عادة إلى أن يتم تمثيلها بطريقة ما ، فهناك مخطط لترميزها في عنوان URL عن طريق ترجمتها إلى المكافئ السداسي العشري ASCII مع بادئة "٪".

توفر معظم لغات البرمجة / الأنظمة الأساسية وظائف ترميز وفك شفرة عناوين URL ، على الرغم من أنها قد لا تلتزم بشكل صحيح بمعايير RFC. على سبيل المثال ، أعرف أن PHP لا تفعل ذلك.




Links