Pour autant que je sache, il y a deux endroits où définir le type de contenu:
- Le client définit un type de contenu pour le corps qu'il envoie au serveur (par exemple pour la publication)
- Le serveur définit un type de contenu pour la réponse.
Cela signifie-t-il que je n'ai pas à définir ou ne dois pas définir de type de contenu pour toutes mes requêtes get (côté client). Et si je peux ou devrais quel type de contenu serait-ce?
J'ai également lu dans quelques articles que le type de contenu du client spécifie le type de contenu que le client souhaite recevoir. Alors peut-être que mon point 1 n'est pas correct?
la source
SHOULD NOT
incluent un Content-Type. Avons-nous un devis explicite?Les requêtes Get ne doivent pas avoir de type de contenu car elles n'ont pas d'entité de requête (c'est-à-dire un corps)
la source
Les requêtes GET peuvent avoir des en-têtes "Accept", qui indiquent les types de contenu que le client comprend. Le serveur peut ensuite l'utiliser pour décider du type de contenu à renvoyer.
Ils sont cependant facultatifs.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
la source
La réponse acceptée est fausse. La citation est correcte, l'affirmation selon laquelle PUT et POST doivent l'avoir est incorrecte. Il n'est pas nécessaire que PUT ou POST aient réellement du contenu supplémentaire. Il n'y a pas non plus d'interdiction pour GET d'avoir effectivement du contenu.
Les RFC disent exactement ce qu'ils signifient. IFF de votre côté (client OU serveur d'origine) enverra du contenu supplémentaire, au-delà des en-têtes HTTP, il DEVRAIT spécifier un en-tête Content-Type. Mais notez qu'il est permis d'omettre le Content-Type et d'inclure toujours du contenu (par exemple, en utilisant un en-tête Content-Length).
la source
Réponse courte: Très probablement, non, vous n'avez pas besoin d' un en-tête de type de contenu pour les requêtes HTTP GET. Mais les spécifications ne semblent pas non plus exclure un en-tête de type de contenu pour HTTP GET.
Matériel de support:
"Content-Type" fait partie des métadonnées de représentation (c.-à-d. Charge utile). Extrait de la section 3.1 de la RFC 7231 :
Cité de la section 3.1.1.5 de la RFC 7231 (en passant, la réponse choisie actuelle avait une faute de frappe dans le numéro de section):
En ce sens, un en-
Content-Type
tête ne concerne pas vraiment une requête HTTP GET (ou une requête POST ou PUT, d'ailleurs). Il est de la charge utile dans un tel quelle que soit la demande. Donc, s'il n'y a pas de charge utile, il n'y en a pas besoinContent-Type
. En pratique, une partie de la mise en œuvre s'est poursuivie et a fait cette hypothèse compréhensible. Cité du commentaire d' Adam :Cependant, à proprement parler, les spécifications elles-mêmes n'excluent pas la possibilité que HTTP GET contienne une charge utile. Extrait de la section 4.3.1 de la RFC 7231 :
Donc, si votre HTTP GET inclut une charge utile pour une raison quelconque, un en-
Content-Type
tête est probablement également raisonnable.la source
Le problème de ne pas passer le type de contenu sur un message GET est que le type de contenu n'est pas pertinent car le côté serveur détermine de toute façon le contenu. Le problème que j'ai rencontré est qu'il existe maintenant de nombreux endroits qui configurent leurs services Web pour être suffisamment intelligents pour récupérer le type de contenu que vous passez et renvoyer la réponse dans le `` type '' que vous demandez. Par exemple. nous envoyons actuellement un message avec un emplacement par défaut JSON, cependant, ils ont configuré leur service Web de sorte que si vous transmettez un type de contenu de xml, ils renverront alors xml plutôt que leur JSON par défaut. Ce qui, à mon avis, est une excellente idée
la source