Wenn eine Sammlung über WebDAV Erstellen sollte der Name der Kollektion mit einem Schrägstrich

StackOverflow https://stackoverflow.com/questions/131754

  •  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)?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top