Soweit ich verstanden habe, gibt es zwei Stellen, an denen der Inhaltstyp festgelegt werden kann:
- Der Client legt einen Inhaltstyp für den Text fest, den er an den Server sendet (z. B. für die Post).
- Der Server legt einen Inhaltstyp für die Antwort fest.
Bedeutet dies, dass ich keinen Inhaltstyp für alle meine Get-Anfragen (clientseitig) festlegen muss oder sollte? Und wenn ich kann oder sollte, welcher Inhaltstyp wäre das?
Außerdem habe ich in einigen Beiträgen gelesen, dass der Inhaltstyp des Clients angibt, welchen Inhaltstyp der Client erhalten möchte. Vielleicht stimmt mein Punkt 1 nicht?
quelle
SHOULD NOT
einen Content-Type enthalten. Haben wir ein explizites Zitat?Get-Anforderungen sollten keinen Inhaltstyp haben, da sie keine Anforderungsentität (dh einen Textkörper) haben.
quelle
GET-Anforderungen können "Accept" -Header enthalten, die angeben, welche Arten von Inhalten der Client versteht. Der Server kann dann entscheiden, welcher Inhaltstyp zurückgesendet werden soll.
Sie sind jedoch optional.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
quelle
Die akzeptierte Antwort ist falsch. Das Zitat ist korrekt, die Behauptung, dass PUT und POST es haben müssen, ist falsch. Es ist nicht erforderlich, dass PUT oder POST tatsächlich zusätzlichen Inhalt haben. Es gibt auch kein Verbot, dass GET tatsächlich Inhalte hat.
Die RFCs sagen genau, was sie bedeuten. Wenn Ihre Seite (Client ODER Ursprungsserver) zusätzlichen Inhalt sendet, sollte über die HTTP-Header hinaus ein Content-Type-Header angegeben werden. Beachten Sie jedoch, dass es zulässig ist, den Inhaltstyp wegzulassen und dennoch Inhalt einzuschließen (z. B. mithilfe eines Inhaltslängen-Headers).
quelle
Kurze Antwort: Höchstwahrscheinlich benötigen Sie für HTTP-GET-Anforderungen keinen Header vom Inhaltstyp. Die Spezifikationen scheinen jedoch auch einen Header vom Typ Inhalt für HTTP GET nicht auszuschließen.
Unterstützende Materialien:
"Inhaltstyp" ist Teil der Darstellungsmetadaten (dh Nutzdaten). Zitiert aus RFC 7231 Abschnitt 3.1 :
Zitiert aus RFC 7231 Abschnitt 3.1.1.5 (die aktuell gewählte Antwort hatte übrigens einen Tippfehler in der Abschnittsnummer):
In diesem Sinne handelt es sich bei einem
Content-Type
Header nicht wirklich um eine HTTP-GET-Anforderung (oder eine POST- oder PUT-Anforderung). Es geht um die Nutzlast innerhalb eines solchen was fordern. Wenn es also keine Nutzlast gibt, braucht es keineContent-Type
. In der Praxis wurde eine Implementierung durchgeführt, die diese verständliche Annahme machte. Zitiert aus Adams Kommentar :Streng genommen schließen die Spezifikationen selbst jedoch nicht aus, dass HTTP GET eine Nutzlast enthält. Zitiert aus RFC 7231 Abschnitt 4.3.1 :
Wenn Ihr HTTP-GET aus irgendeinem Grund eine Nutzlast enthält,
Content-Type
ist wahrscheinlich auch ein Header sinnvoll.quelle
Das Problem, den Inhaltstyp in einer GET-Nachricht nicht zu übergeben, besteht darin, dass der Inhaltstyp irrelevant ist, da die Serverseite den Inhalt ohnehin bestimmt. Das Problem, auf das ich gestoßen bin, ist, dass es mittlerweile viele Orte gibt, die ihre Webservices so einrichten, dass sie intelligent genug sind, um den von Ihnen übergebenen Inhaltstyp zu übernehmen und die Antwort in dem von Ihnen angeforderten 'Typ' zurückzugeben. Z.B. Wir senden derzeit Nachrichten an einen Ort, der standardmäßig JSON ist. Sie haben jedoch ihren Webservice so eingerichtet, dass sie, wenn Sie einen Inhaltstyp von XML übergeben, XML anstelle ihres JSON-Standards zurückgeben. Was ich für die Zukunft für eine großartige Idee halte
quelle