Wenn eine Sammlung über WebDAV Erstellen sollte der Name der Kollektion mit einem Schrägstrich
-
02-07-2019 - |
Frage
Eine WebDAV-Bibliothek Ich verwende diese Anforderung ist die Ausstellung
MKCOL /collection HTTP/1.1
Um der Apache ist die Ausstellung eines 301 da / Sammlung existiert
HTTP/1.1 301 Location: /collection/
Anstatt ein
HTTP/1.1 405 Method Not Allowed
Die Spezifikation ist ein bisschen vage auf diesem (oder es könnte meine Lektüre es sein), aber wenn ein MKCOL Ausgabe, sollte der Name Ihrer Sammlung immer mit einem Schrägstrich (wie es eine Sammlung ist)?
Lösung
HTTP-Code 301 bedeutet "Dauerhaft verschoben", wie Sie wissen.
Apache ist gnädig Sie auf die richtige URL umgeleitet wird. Es kann keine 405 geben, weil keine Ressource mit der URL existiert Sie zur Verfügung gestellt. Aber es kann nicht die Ressource mit dieser genauen URL entweder erstellen. Was kann es tun, ist die Ressource mit der richtigen URL erstellen Sie dann umleiten.
Aber um Ihre Frage zu beantworten, sollten Sie Sammlungen enden mit „/“ Mehrdeutigkeit zu entfernen, da sonst das resultierende URI Normalisierung Verhalten ist bis zu dem Server, glaube ich. Ich glaube nicht, fügte hinzu, dass Slash am Ende von allen RFC vorgeschrieben ist.
EDIT:
Die MKCOL ohne Slash gelingen kann, aber feststellen, dass die Ressource erstellt meldete einen Schrägstrich hat.
Der Server verfügt über eine Option, nach der RFC. Seit es bestimmt die Normalisierungsprozedur URL solange es nicht die Spezifikation nicht verletzt.
Der Server kann dann entweder versuchen, immer zu normalisieren URL Sie es den Weg schicken auf jeden Betrieb, viele 3xx Codes zurück. Dies wird teuer. Oder es kann man am Anfang korrigieren (POST, MKCOL, etc.) dann danach ausfallen oder umgeleitet werden.
Aber der entscheidende Punkt ist, dass es immer die URL wissen lassen, es vorzieht.
Etwas über HTTP-URL-Schema von RFC 2616
3.2.3 URI Vergleich
Beim Vergleich von zwei URIs zu entscheiden, wenn sie übereinstimmen oder nicht, ein Client
Sollte ein Use-Case-sensitive Oktett-by-Oktett Vergleich der gesamter URIs, mit folgenden Ausnahmen:- 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 "/".
Charaktere andere als die in der „Reserviert“ und „unsicher“ Sätze (siehe
RFC 2396 [42]) sind äquivalent zu ihren "" % "HEX HEX" encoding.Zum Beispiel die folgenden drei URIs sind äquivalent:
http://abc.com:80/~smith/home.html http://ABC.com/%7Esmith/home.html http://ABC.com:/%7esmith/home.html
Beachten Sie nicht erwähnt, wie abs_path definiert ist. Auch kann der Server nicht streng genommen ignoriert Ihre Slash entweder nach dem spec. So eine „MKCOL / Sammlung“ und bekommt eine regelmäßige 2xx ohne neu erstellte Ausstellung „/ Sammlung /“ URL ist falsch.
AFAIK, verwandte RFCs, die abs_path definieren nicht den Schrägstrich angegeben werden. So ist es bis zu dem Server, wie man es vergleicht und normalisiert diese.