Format d'une demande HTTP get
Je suis en train d'écrire un serveur HTTP (pour le seul but d'éduquer moi-même).
Typique d'OBTENIR la demande semble être ceci:
GET /?a=1&b=2 HTTP/1.1
Host: localhost
User-Agent: my browser details
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Le seul endroit où je peux voir les variables envoyé est dans la première ligne.
Il serait assez facile d'écrire une regex pour obtenir les variables et leur contenu, mais je me demandais si il existe un moyen plus facile. Je demande parce que j'ai toujours pensé que l'idée de url?first_variable=first_value&second_variable=second_value
faisait partie du protocole, et d'une certaine façon. Cependant, aussi loin que je peux voir, ce n'est pas le cas, et je pourrais tout aussi juste faire url$first_variable-first_value?second_variable-second_value
ou quelque chose.
OriginalL'auteur rlms | 2014-01-17
Vous devez vous connecter pour publier un commentaire.
À quoi vous faites allusion est la Requête de la partie de l'URL, tel que défini dans la section 3.4 de la URL spécification, et autorisé par la section 3.2 de la Spécification HTTP.
Passage de paramètres dans l'URL demandée n'est pas le seul moyen d'envoyer des paramètres dans une requête HTTP. Une autre option est d'utiliser le
application/x-www-form-urlencoded
oumultipart/form-data
Type de Contenu dans unePOST
demande, tel que défini par section 17.13.4 de la spécification HTML 4.01 et section 4.10.22 de la spécification HTML5, par exemple:?
,=
et&
, mais ils sont dans l'URL cahier des charges, qui est pourquoi ils sont la norme?Lisez les normes, ils ne ont un sens. Une chaîne de requête est la partie de l'URL et ne aider à identifier de manière unique une ressource spécifique. HTTP n'a pas de soins si une chaîne de requête d'URL est présente, elle est traitée comme faisant partie de l'URL c'est l'adresse URL qui identifie la ressource. Toutefois, l'évolution des paramètres de la chaîne de requête d'URL et dans le
POST
corps ne changer l'URL, donc le placement est important. Si une URL exige une chaîne de requête ou pas ne dépend pas du type de ressource être exposés à des clients. Il est possible d'utiliser à la fois une chaîne de requête d'URL et de POSTE organe de paramètres dans la même demande.Est-il possible de passer des paramètres dans le Corps de la requête HTTP get?
Nope. Si vous le faites, il sera ignoré.
vous pouvez également envoyer des variables dans les en-têtes personnalisés, mais qui font partie de la logique spécifique de l'application ... un exemple peut être personnalisé en-tête d'authentification pour la fourniture d'étendre les infos de l'utilisateur
OriginalL'auteur Remy Lebeau