Content-Type header
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der HTTP-Content-Type
Repräsentations-Header wird verwendet, um den ursprünglichen Medientyp einer Ressource vor der Anwendung von Inhaltscodierung anzugeben.
In Antworten informiert der Content-Type
-Header den Client über den Medientyp der zurückgesendeten Daten.
In Anfragen wie POST
oder PUT
verwendet der Client den Content-Type
-Header, um den Typ des an den Server gesendeten Inhalts anzugeben.
Wenn eine Serverimplementierung oder -konfiguration streng im Umgang mit Inhaltstypen ist, kann eine 415
Client-Fehlermeldung zurückgegeben werden.
Der Content-Type
-Header unterscheidet sich von Content-Encoding
, da Content-Encoding
dem Empfänger hilft zu verstehen, wie Daten in ihre ursprüngliche Form dekodiert werden können.
Hinweis:
Dieser Wert kann ignoriert werden, wenn Browser MIME sniffing (oder Content Sniffing) auf Antworten durchführen.
Um zu verhindern, dass Browser MIME sniffing verwenden, setzen Sie den Wert des X-Content-Type-Options
Headers auf nosniff
.
Siehe MIME Types Überprüfung für weitere Details.
Header-Typ | Repräsentations-Header |
---|---|
Verbotener Anforderungs-Header | Nein |
CORS-Whitelist-Antwort-Header | Ja |
CORS-Whitelist-Anforderungs-Header | Ja* |
* Werte dürfen kein CORS-unsicheres Anforderungs-Header-Byte enthalten: "():<>?@[\]{},
, Löschen 0x7F
, und Steuerzeichen 0x00
bis 0x19
außer Tab 0x09
.
Sie muss auch einen Medientyp ihres geparsten Wertes haben (Parameter ignorierend), der entweder application/x-www-form-urlencoded
, multipart/form-data
, oder text/plain
ist.
Syntax
Content-Type: <media-type>
Zum Beispiel:
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=ExampleBoundaryString
Direktiven
<media-type>
-
Der Medientyp der Ressource oder Daten. Kann die folgenden Parameter enthalten:
charset
: Gibt den verwendeten Zeichenkodierungs- Standard an. Der Wert ist nicht groß- und kleinschreibungsempfindlich, aber Kleinbuchstaben werden bevorzugt.boundary
: Für Multipart-Entities ist derboundary
Parameter erforderlich. Er wird verwendet, um die Grenzen der verschiedenen Teile der Nachricht zu markieren. Der Wert besteht aus 1 bis 70 Zeichen (nicht endend mit Leerzeichen), die in unterschiedlichen Systemen als robust bekannt sind (z.B. E-Mail-Gateways). Oft wird die Header-Grenze im Anfragetext durch zwei Bindestriche vorangestellt und die endgültige Grenze hat zwei Bindestriche am Ende angehängt.
Beispiele
Bereitstellen von Assets mit korrektem Inhaltstyp
In den folgenden zwei Beispielantworten werden JavaScript und CSS-Assets mit text/javascript
für JavaScript und text/css
für CSS bereitgestellt.
Der korrekte Inhaltstyp für diese Ressourcen hilft dem Browser, sie sicherer und mit besserer Leistung zu handhaben.
Siehe Server-MIME-Typen richtig konfigurieren für weitere Informationen.
HTTP/1.1 200
content-encoding: br
content-type: text/javascript; charset=utf-8
vary: Accept-Encoding
date: Fri, 21 Jun 2024 14:02:25 GMT
content-length: 2978
const videoPlayer=document.getElementById...
HTTP/3 200
server: nginx
date: Wed, 24 Jul 2024 16:53:02 GMT
content-type: text/css
vary: Accept-Encoding
content-encoding: br
.super-container{clear:both;max-width:100%}...
Content-Type
in Multipart-Formularen
In einer POST
-Anfrage, die aus der Übermittlung eines HTML-Formulars resultiert, wird der Content-Type
der Anfrage durch das enctype
Attribut des <form>
Elements festgelegt.
<form action="/foo" method="post" enctype="multipart/form-data">
<input type="text" name="description" value="Description input value" />
<input type="file" name="myFile" />
<button type="submit">Submit</button>
</form>
Die Anfrage sieht in etwa wie das folgende Beispiel aus, wobei einige Header der Kürze halber weggelassen wurden.
In der Anfrage wird für die Veranschaulichung eine Grenze von ExampleBoundaryString
verwendet, aber in der Praxis würde ein Browser eine Zeichenfolge erstellen, die mehr so aussieht: ---------------------------1003363413119651595289485765
.
POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data; boundary=ExampleBoundaryString
--ExampleBoundaryString
Content-Disposition: form-data; name="description"
Description input value
--ExampleBoundaryString
Content-Disposition: form-data; name="myFile"; filename="foo.txt"
Content-Type: text/plain
[content of the file foo.txt chosen by the user]
--ExampleBoundaryString--
Content-Type
in URL-kodierter Formularübertragung
Wenn Formulare keine Dateiuploads beinhalten und einfachere Felder verwenden, können URL-kodierte Formulare bequemer sein, in denen die Formulardaten im Anfragetext enthalten sind:
<form action="/submit" method="post">
<label for="comment">Comment:</label>
<input type="text" id="comment" name="comment" value="Hello!" />
<button type="submit">Submit</button>
</form>
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
comment=Hello!
Content-Type
in einer REST-API mit JSON
Viele REST APIs verwenden application/json
als Inhaltstyp, was für die Maschinenkommunikation oder programmatische Interaktionen praktisch ist.
Das folgende Beispiel zeigt eine 201 Created
-Antwort, die das Ergebnis einer erfolgreichen Anfrage zeigt:
HTTP/1.1 201 Created
Content-Type: application/json
{
"message": "New user created",
"user": {
"id": 123,
"firstName": "Paul",
"lastName": "Klee",
"email": "[email protected]"
}
}
Spezifikationen
Specification |
---|
HTTP Semantics # status.206 |
HTTP Semantics # field.content-type |