O processo completo de solicitação HTTP

O processo completo de solicitação HTTP

1.1 O navegador resolve o endereço IP de acordo com o nome de domínio
   浏览器根据访问的域名找到其IP地址。DNS查找过程如下:

Cache do navegador: primeiro pesquise o cache DNS do próprio navegador (o tempo de cache é relativamente curto, cerca de 1 minuto e só pode acomodar 1000 caches), para ver se há uma entrada correspondente ao nome de domínio no cache e se não expirou. Se expirou e não expirou, a análise termina aqui.
Cache do sistema: Se a entrada correspondente não for encontrada no cache do próprio navegador, o navegador pesquisará o cache DNS do próprio sistema operacional. Se for encontrado e não tiver expirado, interromperá a pesquisa e resolverá até o fim.
Cache do roteador: Se o cache do sistema não for encontrado, ele enviará uma solicitação de consulta ao roteador.
Cache DNS do ISP (Internet Service Provider): Se não for encontrado no cache de roteamento, a última coisa a verificar é o servidor onde o ISP armazena o DNS.

1.2 O navegador estabelece uma conexão TCP com o servidor WEB
   TCP的3次握手。
1.3 O navegador envia uma solicitação HTTP ao servidor WEB
   一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。

1.3.1 Linha de solicitação

A linha de solicitação é dividida em três partes: método de solicitação, URL do endereço de solicitação e versão do protocolo HTTP, separados por espaços. Por exemplo, GET /index.html HTTP / 1.1.

1.请求方法

   HTTP/1.1 定义的请求方法有8种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)、DELETE(删除)、PATCH、HEAD(仅请求响应首部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)。最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

	(1)GET

   当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,会送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号‘?’代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。通过GET方式传递的数据直接放在地址中,所以GET方式的请求一般不包含“请求内容”部分,请求数据以地址的形式表现在请求行。地址中‘?’之后的部分就是通过GET发送的请求数据,各个数据之间用‘&’符号隔开。显然这种方式不适合传送私密数据。另外,由于不同的浏览器对地址的字符限制也有所不同,一半最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用BASE64加密,得出:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

(2)POST

   允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。POST方式请求行中不包含数据字符串,这些数据保存在“请求内容”部分,各数据之间也是使用‘&’符号隔开。POST方式大多用于页面的表单中。因为POST也能完成GET的功能,因此多数人在设计表单的时候一律都使用POST方式,其实这是一个误区。GET方式也有自己的特点和优势,我们应该根据不同的情况来选择是使用GET还是使用POST。



2.URL

   URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。

   组成:<协议>://<主机>:<端口>/<路径>

   端口和路径有事可以省略(HTTP默认端口号是80)



3.协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

1.3.2 Solicitar cabeçalho

O cabeçalho da solicitação adiciona algumas informações adicionais à mensagem de solicitação, que consiste em pares "nome / valor", um par por linha, e o nome e o valor são separados por dois pontos.

Haverá uma linha em branco no final do cabeçalho da solicitação, indicando o final do cabeçalho da solicitação e, em seguida, os dados da solicitação.

1.3.3 Solicitar dados

Os dados do pedido não são usados ​​no método GET, mas no método POST. O método POST é adequado para ocasiões que exigem que os clientes preencham formulários. Os cabeçalhos de solicitação mais usados ​​relacionados aos dados da solicitação são Cntent-Type e Content-Length. A seguir está uma mensagem de solicitação de um método POST:

POST /index.php linha de solicitação HTTP / 1.1

Host: localhost

Agente do usuário: Mozilla / 5.0 (Windows NT 5.1; rv: 10.0.2) Gecko / 20100101 Firefox / 10.0.2 solicitar cabeçalho

Aceitar: text / html, application / xhtml + xml, application / xml; q = 0,9, /; q = 0,8

Idioma de aceitação: zh-cn, zh; q = 0,5

Aceitar-Codificação: gzip, deflate

Conexão: keep-alive

Referer: http: // localhost /

Comprimento do conteúdo: 25

Content-Type : application / x-www-form-urlencoded

Linha em branco

nome de usuário = aa & senha = 1234 dados de solicitação

1.4 O servidor responde à solicitação HTTP e o navegador obtém o código HTML

A mensagem de resposta HTTP consiste em quatro partes: linha de status, cabeçalhos correspondentes, linha em branco e corpo da resposta.

1.4.1 Linha de status

A linha de status é composta por 3 partes: versão do protocolo, código de status e digitalização do código de status. A versão do protocolo é consistente com a mensagem de solicitação e a descrição do código de status é uma descrição simples do código de status.

1.4.2 Cabeçalho de resposta

1.4.3 Dados de resposta

Usado para armazenar informações de dados que precisam ser devolvidas ao cliente.

Linha de status HTTP / 1.1 200 OK

Data: Dom, 17 de março de 2013 08:12:54 GMT cabeçalho de resposta

Servidor: Apache / 2.2.8 (Win32) PHP / 5.2.5

X-Powered-By: PHP / 5.2.5

Set-Cookie: PHPSESSID = c0huq7pdkmm5gg6osoe3mgjmm3; caminho = /

Expira em: quinta-feira, 19 de novembro de 1981, às 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check = 0, pre-check = 0

Pragma: sem cache

Comprimento do conteúdo: 4393

Keep-Alive: tempo limite = 5, máx = 100

Conexão: Keep-Alive

Tipo de conteúdo: text / html; charset = utf-8

Linha em branco

  Dados de resposta HTTP响应示例<title>

Olá, HTTP!

1.5 O navegador analisa o código HTML e solicita recursos no código HTML

Depois que o navegador obtém o arquivo HTML, ele começa a analisar o código HTML e, quando encontra um recurso estático, solicita um download do servidor.

1.6 Feche a conexão TCP e o navegador renderizará a página ao usuário

O navegador usa seu próprio mecanismo de trabalho interno para renderizar os recursos estáticos solicitados e o código HTML e apresentá-los ao usuário.

Acho que você gosta

Origin blog.csdn.net/qq_40808228/article/details/108874557
Recomendado
Clasificación