2017-02-02 1 views

Répondre

2

Le production in RFC 2616 for the Content-Type header est la suivante:

Content-Type = "Content-Type" ":" media-type 

Et the media-type production est ceci:

media-type  = type "/" subtype *(";" parameter) 
type   = token 
subtype  = token 

qui dit que tandis que la partie des paramètres (par exemple, charset=utf-8 est facultative, la partie type "/" subtype n'est pas qui est , un type de support doit avoir un type suivi d'une barre oblique suivie d'un sous-type

So Content-Type: charset=utf-8 i sn't syntaxe valide par cela, et non spécialement défini ailleurs que normativement/autoritativement être soit.

La RFC 2616 est actuellement obsolète par la RFC 7231 et plusieurs autres RFC (les RFC HTTP actuels).

Mais les parties correspondantes de la RFC 7231 définissent essentiellement les mêmes productions pour ce cas:

Le production in RFC 7231 for the value of the Content-Type header est la suivante:

Content-Type = media-type 

Et the media-type production est ceci:

media-type = type "/" subtype *(OWS ";" OWS parameter) 
type  = token 
subtype = token 

Et pas autre spéculaire obsolète ou remplace cette partie-RFC 7231 reste d'autorité sur ce point.


La plupart des langages de programmation ont de bonnes libs d'analyse syntaxique de type média pour vérification de la syntaxe; exemple:

npm install content-type 
node -e "var ct = require('content-type'); ct.parse('charset=utf-8')" 
=> TypeError: invalid media type 
node -e "var ct = require('content-type'); ct.parse('image; charset=utf-8')" 
=> TypeError: invalid media type 
+0

Merci. J'ai fait quelques tests, et bien que le type soit certainement requis, il semble que le sous-type n'est pas requis –

+1

Avec quoi avez-vous testé? Le sous-type est requis par les spécifications HTTP au moins. – sideshowbarker

+0

J'utilise le programme MHonArc –

1

Non, je ne peux pas trouver un tel type de contenu défini dans la RFC 2616 ne importe où ou RFC 7231.

Et cela ne fonctionne même pas dans Chrome.

(j'ai essayé xhr.setRequestHeader('Content-type','charset=utf-8');. Quand je xhr.send il n'y a pas de tête content-type.)