Qual é a diferença entre “CONNECT” e “GET HTTPS”?

2

Antes de chegar à questão real, deixe-me explicar como funciona o meu projeto: por questão de simplicidade, meu proxy está no meu laptop, onde o cliente (meu navegador) também está; o servidor remoto será, por exemplo, o YouTube.

O cliente está conectado a uma porta específica do proxy graças ao plug-in SwitchOmega: o cliente deseja se conectar a www.youtube.com e o proxy recebe a seguinte solicitação:

CONNECT www.youtube.com:443 HTTP/1.1
Host: www.youtube.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36

Foi-me dito que quando um proxy recebe uma solicitação CONNECT , ele deve abrir uma conexão TCP para IP: Port, retornar uma mensagem 200 OK ao cliente e enviar dados até que um lado da conexão seja fechado.

Com outro plug-in que rastreia solicitações HTTP, HTTP Trace, vejo uma solicitação diferente no meu navegador:

GET https://www.youtube.com/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
and other data...

Então, por que meu proxy recebe CONNECT www.youtube.com:443 HTTP/1.1 enquanto o HTTP Trace mostra GET https://www.youtube.com/ ? Eles significam a mesma coisa?

    
por elmazzun 23.03.2016 / 18:44

2 respostas

2

CONNECT lida com a solicitação

CONNECT

The CONNECT method converts the request connection to a transparent TCP/IP tunnel, usually to facilitate SSL-encrypted communication (HTTPS) through an unencrypted HTTP proxy.

Enquanto GET recupera os dados.

GET

The GET method requests a representation of the specified resource. Requests using GET should only retrieve data and should have no other effect. (This is also true of some other HTTP methods.) The W3C has published guidance principles on this distinction, saying, "Web application design should be informed by the above principles, but also by the relevant limitations."

Origem - Protocolo de transferência de hipertexto

    
por 23.03.2016 / 18:55
0

Acho que você está lidando com um problema estético.

GET https://www.youtube.com/ é provavelmente o que está registrado para indicar que a busca é feita com GET e o destino é https://www.youtube.com .

Não existe uma forma padronizada para um proxy suportar GET https:// URIs, foi debatido alguns anos atrás no IETF HTTP WG mas descartado por várias razões (problemas de confiança com proxies principalmente se eu me lembro)

É muito improvável que seja o pedido enviado ao proxy. Como outros disseram, CONNECT é usado para se conectar a www.youtube.com:443 , então haveria alguma outra requisição GET que não contenha as partes de esquema (protocolo) ou autoridade (servidor: porta etc) do URI.

No seu exemplo, seria:

GET / HTTP/1.1
host: www.youtube.com:443
    
por 21.07.2016 / 14:34