عند إنشاء مجموعة عبر WebDAV، يجب أن ينتهي اسم المجموعة بشرطة مائلة
-
02-07-2019 - |
سؤال
تقوم مكتبة WebDAV التي أستخدمها بإصدار هذا الطلب
MKCOL /collection HTTP/1.1
الذي يصدر أباتشي 301 إليه بسبب وجود /collection
HTTP/1.1 301 Location: /collection/
بدلا من
HTTP/1.1 405 Method Not Allowed
المواصفات غامضة بعض الشيء في هذا الشأن (أو قد تكون قراءتي لها)، ولكن عند إصدار MKCOL، هل يجب أن ينتهي اسم مجموعتك دائمًا بشرطة مائلة (لأنها مجموعة)؟
المحلول
رمز HTTP 301 يعني "تم النقل نهائيًا" كما تعلم.
يقوم Apache بإعادة توجيهك بلطف إلى عنوان URL الصحيح.لا يمكن أن يمنحك 405 لأنه لا يوجد مورد بعنوان URL الذي قدمته.لكن لا يمكنه إنشاء المورد باستخدام عنوان URL الدقيق هذا أيضًا.ما يمكنه فعله هو إنشاء المورد بعنوان URL المناسب ثم إعادة توجيهك.
ولكن للإجابة على سؤالك، يجب عليك إنهاء المجموعات بـ "/" لإزالة الغموض، وإلا فإن سلوك تسوية URI الناتج يعود إلى الخادم على ما أعتقد.لا أعتقد أن إضافة شرطة مائلة زائدة أمر مفروض من قبل أي RFC.
يحرر:
قد ينجح MKCOL بدون شرطة مائلة زائدة، لكن لاحظ أن المورد الذي تم إنشاء تقرير عنه يحتوي على شرطة مائلة زائدة.
لدى الخادم خيارًا، وفقًا لـ RFC.نظرًا لأنه يحدد إجراء تسوية عنوان URL طالما أنه لا ينتهك المواصفات.
يمكن للخادم بعد ذلك إما محاولة تسوية عنوان URL الذي ترسله في كل عملية، مما يؤدي إلى إرجاع الكثير من رموز 3xx.هذا يصبح باهظ الثمن.أو يمكنه تصحيحك في البداية (POST، MKCOL، وما إلى ذلك).) ثم تفشل أو تعيد التوجيه بعد ذلك.
لكن النقطة الأساسية هي أنه سيُعلمك دائمًا بعنوان URL الذي تفضله.
شيء ما على مخطط URL HTTP من آر إف سي 2616
3.2.3 مقارنة URI
عند مقارنة اثنين من URIS لتحديد ما إذا كانا متطابقين أم لا ، عميل
يجب استخدام مقارنة أوكتيت حساسة للحالة من URIs بأكملها ، مع هذه الاستثناءات:- A port that is empty or not given is equivalent to the default port for that URI-reference; - Comparisons of host names MUST be case-insensitive; - Comparisons of scheme names MUST be case-insensitive; - An empty abs_path is equivalent to an abs_path of "/".
شخصيات أخرى غير تلك الموجودة في مجموعات "المحفوظة" و "غير آمنة" (انظر
RFC 2396 [42]) تعادل ترميز "٪" Hex Hex ".على سبيل المثال ، فإن URIs الثلاثة التالية متكافئة:
http://abc.com:80/~smith/home.html http://ABC.com/%7Esmith/home.html http://ABC.com:/%7esmith/home.html
لاحظ عدم ذكر كيفية تعريف abs_path.كما لا يمكن للخادم أن يتجاهل الشرطة المائلة بدقة سواء وفقًا للمواصفات.لذا، فإن إصدار "MKCOL /collection" والحصول على 2xx عادي تم إنشاؤه بدون عنوان URL جديد "/collection/" هو أمر غير صحيح.
AFAIK، RFCs ذات الصلة التي تحدد abs_path لا تحدد الشرطة المائلة اللاحقة.لذا فإن الأمر متروك للخادم بشأن كيفية مقارنة تلك العناصر وتطبيعها.