L'en-tête indique simplement en quoi le contenu est codé. Il n'est pas nécessairement possible de déduire le type de contenu à partir du contenu lui-même, c'est-à-dire qu'il ne suffit pas de regarder le contenu pour savoir ce qu'il faut en faire. C'est à cela que servent les en-têtes HTTP, qui indiquent au destinataire le type de contenu auquel il est (supposé) avoir affaire.
Content-type: application/json; charset=utf-8
indique que le contenu doit être au format JSON, codé avec le code de caractères UTF-8. Désigner l'encodage est quelque peu redondant pour JSON, puisque l'encodage par défaut (unique ?) pour JSON est UTF-8. Dans ce cas, le serveur récepteur est apparemment satisfait de savoir qu'il a affaire à JSON et suppose que l'encodage est UTF-8 par défaut, c'est pourquoi il fonctionne avec ou sans l'en-tête.
Cet encodage limite-t-il les caractères qui peuvent figurer dans le corps du message ?
Non. Vous pouvez envoyer ce que vous voulez dans l'en-tête et le corps. Mais, si les deux ne correspondent pas, vous risquez d'obtenir des résultats erronés. Si vous spécifiez dans l'en-tête que le contenu est codé en UTF-8 mais que vous envoyez en réalité un contenu codé en Latin1, le récepteur peut produire des données erronées en essayant d'interpréter des données codées en Latin1 comme étant des données UTF-8. Si, bien sûr, vous spécifiez que vous envoyez des données codées en Latin1 et que vous le faites réellement, alors oui, vous êtes limité aux 256 caractères que vous pouvez coder en Latin1.
5 votes
Jeter un coup d'œil à hanselman.com/blog/
11 votes
De manière intrigante, selon L'IANA
application/json
Enregistrement du type de média il ne semble pas qu'il y ait un supportcharset
bien qu'il soit souvent fourni dans la pratique.1 votes
I know it specifies the character encoding but the service works fine without it.
"fonctionner" ne signifie pas toujours "le code/la configuration existant(e) est la manière la plus correcte, couvrant tous les cas de figure, de faire une chose". Cela dépend de toutes les conventions et hypothèses qui peuvent ne pas fonctionner dans d'autres circonstances. Personnellement, j'essaie toujours d'être aussi explicite que possible.6 votes
L'envoi d'un paramètre "charset" est incorrect et dénué de sens. Voir RFC 8259, section 11, dernière phrase.