S'il vous plaît, s'il vous plaît, s'il vous plaît, n'implémentez pas votre propre client HTTP sans avoir lu au préalable les spécifications correspondantes. Veuillez lire et vous assurer que vous avez bien compris au moins les points suivants RFC 2616 . (Et si vous êtes ambitieux, les RFC 7230 à 7235).
Si HTTP semble être un protocole facile à utiliser, il comporte en réalité un certain nombre de points subtils. Quiconque a écrit un serveur HTTP vous parlera des solutions de contournement qu'il a dû mettre en œuvre pour faire face à des clients incorrects mais largement déployés. À moins que vous n'aimiez lire les spécifications, veuillez utiliser une bibliothèque de clients bien établie ; Curl est un bon choix, mais je suis sûr qu'il y en a d'autres.
Si vous voulez mettre en place le vôtre :
- n'utilisez pas HTTP/0.9 ;
- HTTP/1.0 requiert la ligne de requête et la ligne vide ;
- dans HTTP/1.1, le
Host:
La tête est obligatoire en plus de ce qui précède.
En omettant le Host:
dans HTTP/1.1 est la cause la plus courante des erreurs 400.