wake-up-neo.com

Benötige ich einen Inhaltstyp-Header für HTTP-GET-Anforderungen?

Soweit ich verstanden habe, gibt es zwei Stellen, an denen der Inhaltstyp festgelegt werden kann:

  1. Der Client legt einen Inhaltstyp für den Text fest, den er an den Server sendet (z. B. zum Versenden).
  2. Der Server legt einen Inhaltstyp für die Antwort fest.

Bedeutet dies, dass ich keinen Inhaltstyp für alle meine get-Anforderungen festlegen muss oder sollte (clientseitig). Und wenn ich kann oder soll, welcher Inhaltstyp wäre das?

Außerdem habe ich in einigen Beiträgen gelesen, dass der Inhaltstyp des Clients angibt, welche Art von Inhalt der Client erhalten möchte. Also ist mein Punkt 1 vielleicht nicht richtig?

131
Martin Flucka

Gemäß RFC 7231, Abschnitt 3.1.5.5 :

Ein Absender, der eine Nachricht mit einem Nutzlasttext generiert, MUSS in dieser Nachricht ein Content-Type-Header-Feld generieren, es sei denn, der beabsichtigte Medientyp der beigefügten Darstellung ist unbekannt an den Absender. Wenn kein Content-Type-Header-Feld vorhanden ist, kann der Empfänger entweder einen Medientyp "application/octet-stream" ( [RFC2046], Abschnitt 4.5.1 ) oder untersuchen Sie die Daten, um ihren Typ zu bestimmen.

Es bedeutet, dass die Content-Type HTTP-Header sollte nur für PUT und POST Anforderungen festgelegt werden.

87
Epoc

Abrufanforderungen sollten keinen Inhaltstyp haben, da sie keine Anforderungsentität haben (dh einen Textkörper).

62
Dmitry Negoda

GET-Anforderungen können "Accept" -Kopfzeilen enthalten, die angeben, welche Arten von Inhalten der Client versteht. Der Server kann dann damit entscheiden, welcher Inhaltstyp zurückgesendet werden soll.

Sie sind jedoch optional.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1

32
Matthew Wilson

Die akzeptierte Antwort ist falsch. Das Zitat ist richtig, die Behauptung, dass PUT und POST= muss es haben, ist falsch. Es ist nicht erforderlich, dass PUT oder POST tatsächlich zusätzlichen Inhalt haben es gibt ein Verbot gegen GET tatsächlich Inhalte zu haben.

Die RFCs sagen genau, was sie bedeuten. IFF Ihre Seite (client OR Origin-Server) sendet zusätzlichen Inhalt, Neben den HTTP-Headern SOLLTE ein Content-Type-Header angegeben werden. Es ist jedoch zulässig, den Content-Type wegzulassen und dennoch Inhalte einzuschließen (z. B. durch Verwendung eines Content-Length-Headers).

23
user4157069