Quand doit-on utiliser CONNECTER et d'OBTENIR des méthodes HTTP au Serveur Proxy HTTP?
Je suis en train de construire un client web de la bibliothèque. Maintenant, je suis à la mise en œuvre d'une fonctionnalité de proxy, j'ai donc fais quelques recherches et j'ai vu un peu de code à l'aide de la CONNECT
méthode pour demander une URL.
Mais en vérifiant dans mon navigateur web, il n'utilise pas le CONNECT
méthode, mais les appels de la méthode GET à la place.
Donc, je suis confus. Quand je dois utiliser les deux méthodes?
Vous devez vous connecter pour publier un commentaire.
D'une requête de connexion prie instamment votre proxy pour établir un tunnel HTTP, à la distance de point de fin.
Généralement est-il utilisé pour les connexions SSL, mais il peut être utilisé avec le protocole HTTP ainsi (utilisés pour les fins de procuration de la chaîne et de tunneling)
La ligne ci-dessus ouvre une connexion à partir de votre proxy http://www.google.com sur le port 443.
Après cela, le contenu qui est envoyé par le client est transmis par le serveur proxy pour
www.google.com:443
.Si un utilisateur tente de récupérer une page http://www.google.com, le proxy peut envoyer exactement la même requête et récupérer la réponse pour lui, sur son nom.
Avec SSL(HTTPS), seule la distance deux points de comprendre les demandes, et que le proxy ne peut pas les déchiffrer. Par conséquent, il n'est ouvert que le tunnel à l'aide de se CONNECTER, et laisse les deux points d'extrémité (serveur et client) parler les uns aux autres directement.
Chaînage De Proxy:
Si vous enchaînez 2 serveurs proxy, c'est la séquence de requêtes émises.
CONNECT
est utilisé pour la transmission par proxy HTTPS demandes obligatoirement, et en l'utilisant pour HTTP est possible, mais pas nécessaire.200 Established
réponse de chaque proxy vous enchaînez, enfin, envoyer l'originalGET
ouCONNECT
TL;DR un client web utilise CONNECTER seulement quand il sait qu'il parle à un serveur proxy et le final URI commence avec
https://
.Oui je réponds au bout de 4 ans. Lorsqu'un navigateur dit:
cela signifie:
"Salut proxy, veuillez ouvrir un raw TCP connexion à google; tout ce qui suit octets j'écris, vous répétez simplement sur la connexion sans interprétation. Oh, et une chose de plus. Faire cela seulement si parler à google directement, mais si vous utilisez un autre proxy vous-même, au lieu que vous venez de leur dire la même
CONNECT
."Notez comment cela ne dit rien à propos de TLS (https). En fait
CONNECT
est orthogonal à TLS; vous pouvez avoir un seul, vous pouvez avoir d'autre, ou vous pouvez avoir les deux.Cela étant dit, l'intention de
CONNECT
est de permettre de bout en bout, le chiffrement TLS session, de sorte que les données sont illisibles pour un proxy (ou l'intégralité de la chaîne de proxy). Il fonctionne même si un proxy ne comprends pas TLS, parce queCONNECT
peut être émis à l'intérieur de la plaine HTTP et nécessite de la part du proxy rien de plus que de copier les octets brutes autour de.Mais la connexion à la première procuration peut être TLS (https), même si cela signifie un double chiffrement du trafic entre vous et le premier proxy.
Évidemment, il n'a pas de sens
CONNECT
quand je parle directement au serveur final. Vous venez de commencer à parler de TLS et puis question HTTPGET
. La fin des serveurs normalement désactiverCONNECT
tout à fait.D'un proxy,
CONNECT
support ajoute les risques de sécurité. Toutes les données peuvent être transmises par le biais deCONNECT
, même ssh tentative de piratage d'un serveur sur 192.168.1.*, même SMTP, envoyer du spam. Monde extérieur voit ces attaques régulières des connexions TCP initié par un proxy. Ils ne se soucient pas quelle est la raison, ils ne peuvent pas vérifier si HTTPCONNECT
est à blâmer. Donc c'est à procurations de se prémunir contre les abus.Comme une règle du pouce GET est utilisé pour la plaine HTTP et CONNECT pour HTTPS
Il y a plus de détails si vous voulez probablement à lire le RFC-s
http://www.ietf.org/rfc/rfc2068.txt
http://www.ietf.org/rfc/rfc2817.txt