2010-07-10 8 views
10

Gibt es irgendwelche Daten darüber, wie Browser tatsächlich Rest http-Verben (vor allem PUT, DELETE) unterstützen. Diese Frage wird hauptsächlich durch die Tatsache motiviert, dass viele Quellen (wie diese stackoverflow answer) informieren, dass die meisten Browser PUT und DELETE nicht unterstützen, aber nicht sagen, welche.Fine Grained Ruhe HTTP-Verben Browser-Unterstützung

Rails löst dies mit einem Patch auf dem Client, und die Umkehrung des Patches auf dem Server, aber ich frage mich zum Beispiel, welche Browser würden solche Hack nicht benötigen.

+0

Was hat das mit den Browsern zu tun? –

+1

Jonh: Mehrere von ihnen können PUT DELETE-Abfragen nicht ausführen. Dies ist vor allem in Ajax-Abfragen wichtig, da gute alte Formulare dies nicht durch Spezifizierung tun können. Auch auf ruhenden Webservices spielt die Semantik hinter PUT und DELETE eine Rolle. –

Antwort

5

Im Zweifelsfall ask Anne:

http://annevankesteren.nl/2007/10/http-method-support

Es ist ein paar Jahre alt, aber es gibt einen Persilschein PUT und DELETE, aber es versucht, auch andere Fälle von Unbekannten Verben wie TRACE und PROPFIND:

Van Kesteren hat Firefox 3, Opera 9.5 und Internet Explorer 7 getestet, eine Mischung aus Vorabversionen und Releases. GET und POST funktionierten wie erwartet, und alle unterstützten den Standardsatz von http-Methoden aus RFC 2616. Es gibt einige Gehäuseprobleme, daher sollten Sie versuchen, immer in Großbuchstaben zu bleiben; TRACE und OPTIONS sind Kantenfälle mit Problemen in Firefox bzw. Opera. CONNECT und TRACE und SEARCH sind problematisch für IE. Bedenken Sie, dass dies im Jahr 2007 so geschrieben wurde YMMV.

Ich denke, die ganze Verwirrung über Browser nicht andere Unterstützung als GET und POST ergibt mich aus der Tatsache, dass die HTML-Spezifikation listet nur diese beide in dem HTML <form> element:

Die Methode Attribute des spezifizierten FORM-Elements die HTTP-Methode, die zum Senden des Formulars an den Verarbeitungsagenten verwendet wurde. Dieses Attribut kann zwei Werte annehmen:

  • get: Mit dem HTTP „get“ -Methode wird das Formular Datensatz an den URI durch das action-Attribut angegeben angefügt (mit einem Fragezeichen() als „?“ Trennzeichen) und dieser neue URI wird an den Verarbeitungsagenten gesendet.

  • Post: Bei der HTTP-Methode "post" wird der Formulardatensatz in den Hauptteil des Formulars eingefügt und an den Verarbeitungsagenten gesendet.

Dies ist der Grund, warum nur Browser Unterstützung GET und POST in HTML-nativ; weil der Standard es sagt.

Der Strom (Januar 2014) XMLHttpRequest specification auf der anderen Seite heißt es ausdrücklich, dass die Anforderungsmethoden mit einigen Ausnahmen (CONNECT, TRACE oder TRACK) erlaubt durch, und dass RFC2616 Methoden groß geschrieben werden sollen, werden sollen:

\ 6. Wenn die Methode case-insensitive Übereinstimmungen für CONNECT, DELETE, GET, KOPF, OPTIONEN, POST, PUT, TRACE oder TRACK nicht berücksichtigt, subtrahiere 0x20 von jedem Byte im Bereich 0x61 (ASCII a) bis 0x7A (ASCII z).

Wenn es keiner der oben genannten entspricht, wird es wörtlich übergeben, einschließlich in der endgültigen Anfrage.

EDIT Eine andere Quelle, die oder weniger die gleichen Schluss zu mehr gekommen ist: Das XMLHttpRequest und DELETE PUT unterstützt: http://jshirley.vox.com/library/post/xmlhttprequest-and-rest.html (Warnung, Defekten Link ab Mai 2014).

BEARBEITEN Die Frage war asked before natürlich, aber die zwei Jahre alten Antworten sind noch gültig.

EDIT Kurzer Lebenslauf von Anne van Kesteren Seite von 2007 und fügte hinzu Abschnitt HTML vs XMLHttpRequest

+2

Ja, es ist alt. Aber dann, ich denke, es ist traurig, das Beste, was wir haben, ohne Crowdsourcing in http://www.mnot.net/javascript/xmlhttprequest/ –

+1

Anne Van Kesterens Link ist tot. Wenn Sie mit Quellen von anderen Sites antworten, sollten Sie sie hier transkribieren, um zu vermeiden, dass die Informationen verloren gehen, wenn Links nicht mehr funktionieren. :( –

+0

Im Prinzip muss ich zustimmen. Zu meiner Verteidigung waren die Quellen schon drei volle Jahre alt, als ich sie zitierte, und teste dann aktuelle Versionen von Browsern. Jetzt sind sie 7 Jahre alt. Ich fand die AVK Verbindung gut , aber jshirley auf der anderen Seite gab mir einen leeren Blick, ich werde sehen, was ich tun kann .. – mogsie

-1

Siehe die PutDeleteSupport Seite des Atom-Wiki. Vielleicht interessieren Sie sich auch für andere Atom-Wiki-Seiten, die sich auf HTTP beziehen.

+0

Danke, aber dieser zeigt eigentlich nur die Unterstützung von Sprachclients. Ich bin auf der Suche nach Unterstützung für Browser-Clients wie chorme, firefox, also Opera, Opera Mini, und so weiter. –