Directorio de artículos
-
-
-
-
- 1. Descripción general de HTTP
- 2. Flujo de trabajo de solicitud HTTP
- 3. Formato de mensaje de solicitud HTTP
- 4. formato de URL
- 5. Método de solicitud
- 6. La diferencia entre GET y POST (importante, pregunta frecuente en las entrevistas)
- 7. Atributos comunes del encabezado de los mensajes
- 8. Clasificación del código de estado HTTP
- 9. Varios conceptos importantes de HTTP
- 10. Características de HTTP
-
-
-
1. Descripción general de HTTP
El nombre completo de HTTP es Protocolo de transferencia de hipertexto. Es un protocolo de solicitud-respuesta simple, que es un protocolo de capa de aplicación y se basa en el protocolo TCP. Especifica qué tipo de mensajes el cliente puede enviar al servidor y qué tipo de respuesta obtiene. Todos los servidores www se basan en este protocolo.
2. Flujo de trabajo de solicitud HTTP
La séptima capa del modelo OSI donde funciona el protocolo HTTP es la capa de aplicación superior. Una aplicación importante del protocolo HTTP es el servicio www. El siguiente es el flujo de trabajo de solicitud del protocolo HTTP.
(1)用户在浏览器输入访问地址:http://www.baidu.com
(2)浏览器请求DNS进行域名解析,从而得到域名对应的IP地址
(3)浏览器将端口号(默认80)从访问地址中解析出来
(4)浏览器通过解析出来的IP和端口号与服务器之间进行tcp三次握手建立一条可靠的tcp连接
(5)三次握手建立好tcp连接后,浏览器向服务器发送一条http请求报文
(6)服务器响应并读取浏览器的请求信息,然后返回响应报文
(7)服务器关闭http连接,关闭tcp连接,浏览器显示访问内容到网页上
3. Formato de mensaje de solicitud HTTP
Un ejemplo es el siguiente:
Línea de solicitud : describe el método de solicitud, la URL de solicitud y el protocolo y la versión HTTP.
Encabezados de solicitud (encabezados de mensajes, encabezados de solicitud): describe quién envía la solicitud, de dónde proviene la solicitud o las preferencias y capacidades del cliente. . El servidor puede intentar proporcionar una mejor respuesta al cliente en función de la información del cliente proporcionada en el encabezado de la solicitud. El formato de la información en el encabezado de la solicitud es clave: valor.
Cuerpo de la solicitud (cuerpo del mensaje, datos de la solicitud): los datos pasados por el cliente al servidor.
4. formato de URL
URL (Localizador uniforme de recursos), Localizador uniforme de recursos. Cada archivo en Internet tiene una URL única. La información que contiene indica la ubicación del archivo y cómo debe manejarlo el navegador.
El formato específico de la URL:
1、资源在哪台主机上——域名(dormain)或者ip来体现主机(host)
2、和主机上的哪个进程去获取资源——端口(port)
3、具体定位到是该进程管理的哪个资源——资源路径/路径(path)
4、URL设计之初,不仅仅为HTTP协议使用。所以需要表示出本次资源对应的协议(protocol/schema)
5、针对本次请求,除了资源本身之外的特殊要求。(查询字符串 query string、文档片段fragment)
5. Método de solicitud
Método de solicitud | ilustrar |
---|---|
CONSEGUIR | Realiza una solicitud de "mostrar" al recurso especificado. En una solicitud GET, los datos pasados en la solicitud se incluyen en la URL y se muestran en la barra de direcciones del navegador. Al transmitir datos en una solicitud GET, los datos deben contener caracteres ASCII. Los navegadores pueden almacenar en caché las solicitudes GET. |
CORREO | Envíe datos al recurso especificado y solicite al servidor su procesamiento (como enviar un formulario o cargar un archivo). Los datos se incluyen en el cuerpo de la solicitud. Cuando la solicitud POST transmite datos, los datos pueden ser caracteres ASCII o datos de bytes. El valor predeterminado es el tipo de carácter. De forma predeterminada, los navegadores no almacenan en caché las solicitudes POST. |
CABEZA | Solicite al servidor una respuesta coherente con la solicitud GET, excepto que no se devolverá el cuerpo de la respuesta. Este método obtiene la metainformación contenida en el encabezado del mensaje de respuesta sin tener que transmitir todo el contenido de la respuesta. |
PONER | Cargue su contenido más reciente en la ubicación de recursos especificada. |
BORRAR | Solicite al servidor que elimine el recurso representado por Request-URI. |
TRANCE | Solicitudes de eco recibidas por el servidor, utilizadas principalmente para pruebas o diagnósticos. |
OPCIONES | Hace que el servidor devuelva todos los métodos de solicitud HTTP admitidos por el recurso. Utilice '*' en lugar del nombre del recurso y envíe una solicitud de opciones al servidor web para probar si las funciones del servidor funcionan correctamente. |
CONECTAR | El protocolo HTTP/1.1 está reservado para servidores proxy que pueden cambiar las conexiones a las canalizaciones. Normalmente, el usuario SSL cifra la conexión del servidor (a través de un servidor proxy HTTP no cifrado). |
6. La diferencia entre GET y POST (importante, pregunta frecuente en las entrevistas)
CONSEGUIR | CORREO | |
---|---|---|
botón atrás/actualizar | inofensivo | Los datos se volverán a enviar (el navegador debe informar al usuario que los datos se volverán a enviar) |
marcador | Se puede marcar como favorito | No se puede marcar como favorito |
cache | se puede almacenar en caché | no se puede almacenar en caché |
tipo de codificación | Sólo es posible la codificación de URL (application-x-www-form-urlencoded) | Admite múltiples codificaciones (multipart/form-data, etc.) |
historia | Los parámetros persisten en el historial del navegador. | Los parámetros no persisten en el historial del navegador. |
Limitaciones en la longitud de los datos | Al enviar datos, el método GET agrega datos a la URL; la longitud de la URL es limitada (la longitud máxima de la URL es 2048 caracteres) | Ilimitado |
Restricciones sobre tipos de datos | Sólo se permiten caracteres ASCII | También se permiten datos binarios ilimitados. |
seguridad* | GET es menos seguro que POST porque los datos enviados son parte de la URL | POST es más seguro que GET porque los parámetros no se guardan en el historial del navegador ni en los registros del servidor web. |
visibilidad | Los datos son visibles para todos en la URL. | Los datos no se mostrarán en la URL. |
* Seguridad : Desde la perspectiva de la transmisión, todos son inseguros porque HTTP se transmite en texto sin formato en la red. Siempre que el paquete se capture en el nodo de la red, el mensaje de datos se puede obtener por completo.
7. Atributos comunes del encabezado de los mensajes
Campo | ilustrar | Ejemplo |
---|---|---|
Aceptar | Tipos de contenido de respuesta aceptables | Aceptar:texto/sin formato (tipo de texto) |
Aceptar juego de caracteres | Juegos de caracteres aceptables | Aceptar juego de caracteres: utf-8 |
Aceptar codificación | Codificación aceptable del contenido de la respuesta. | Aceptar codificación: gzip, deflate |
Aceptar-Idioma | Lista de idiomas de contenido de respuesta aceptables | Aceptar-Idioma: en-US |
Aceptar-Fechahora | Versión aceptable del contenido de la respuesta expresada en el tiempo. | Fecha y hora de aceptación: jueves 31 de mayo de 2007 20:35:00 GMT |
Control de caché | En la solicitud/respuesta, si se debe utilizar el mecanismo de almacenamiento en caché | Control de caché: sin caché |
Conexión | El tipo de conexión que el cliente quiere utilizar con preferencia. | Conexión: mantener vivo Conexión: Actualizar |
Largancia de contenido | La longitud del cuerpo de la solicitud en notación octal. | Longitud del contenido: 348 |
Tipo de contenido | El tipo MIME del cuerpo de la solicitud. | Tipo de contenido: aplicación/x-www-form-urlencoded |
Fecha | La fecha y hora en que se envió el mensaje. | Fecha: 26 de diciembre de 2022 17:30:00 GMT |
Esperar | Indica que el cliente requiere que el servidor realice acciones específicas. | Espere: 100-continuar |
De | La dirección de correo electrónico del usuario que inició esta solicitud. | De: [email protected] |
Anfitrión | Nombre de dominio del servidor y número de puerto; se puede omitir el puerto predeterminado | Anfitrión: www.itbilu.com:80 o www.itbilu.com |
Si coincide | Utilizado principalmente para PUT, la coincidencia de entidades solo puede funcionar | If-Match: “9jd00cdj34pss9ejqiw39d82f20d0ikd” |
If-Modified-Since | 资源未被修改的情况下返回304未修改 | If-Modified-Since: Dec, 26 Dec 2022 17:30:00 GMT |
User-Agent | 浏览器的身份标识字符串 | User-Agent: Mozilla/ |
Upgrade | 要求服务器升级到一个高版本协议 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
Via | 告诉服务器,这个请求是由哪个代理发出的 | Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1) |
Referer | 表示跳转到当前页面的之前的页面 | Referer: http://itbilu.com/nodejs |
Origin | 发起一个针对跨域资源共享的请求 | Origin: http://www.itbilu.com |
8、HTTP状态码分类
分类 | 分类描述 |
---|---|
1XX | 信息,服务器收到请求,需要请求者继续执行操作 |
2XX | 成功,操作被成功接收并处理 |
3XX | 重定向,需要进一步的操作以完成请求 |
4XX | 客户端错误,请求包含语法 |
5XX | 服务器错误,服务器在处理请求的过程中发生了错误 |
常见的状态码及含义
状态码 | 含义 |
---|---|
200 | 请求成功,已经正常处理完毕 |
301 | 请求重定向,转移到其他URL |
302 | 请求临时重定向 |
304 | 请求被重定向到客户端本地缓存 |
400 | 客户端请求存在语法错误 |
401 | 客户端请求没有经过授权 |
403 | 客户端的请求被服务器拒绝,一般为客户端没有访问权限 |
404 | 资源未找到,客户端请求的URL在服务端不存在 |
500 | 服务端出现异常 |
HTTP状态码列表
状态码 | 英文名称 | 中文描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成。 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过次返回码清除浏览器的表单域。 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求。 |
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 |
301 | Moved Permanently | 永久移动。请求的资源已被永久地移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL代替。 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有的URL。 |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看。 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问。 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向。 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解。 |
401 | Unauthorized | 请求要求用户的身份认证。 |
402 | Payment Required | 保留,将来使用。 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求。 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面。 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 |
414 | Request-URL Too Large | 请求的URL过程(URL通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
9、HTTP几个重要概念
连接:Connection
一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
在http1.1,request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。
在http1.1中,client和server都是默认对方支持长链接的,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。
消息:Message
HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连续传输。
请求:Request
一个客户端到服务器的请求消息包括应用于资源的方法,资源的标识符和协议的版本号。
响应:Response
一个服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。
实体:Enity
数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。
客户端:Client
一个为发送请求目的而建立连接的应用程序。
用户代理:User-Agent
初始化一个请求的客户机,它们是浏览器、编辑器或者其他工具。
代理:Proxy
一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其他客户机建立请求。请求时通过可能的翻译在内部或经过传递到其它服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。
网关:Gateway
一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好像对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
通道:Tunnel
是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。
Caché: almacenamiento local de información de respuesta de caché .
10. Características de HTTP
(1) Soporta modelo cliente/servidor.
(2) Simple y rápido
Cuando un cliente solicita servicios al servidor, solo necesita transmitir el método y la ruta de la solicitud. Los métodos de solicitud más utilizados incluyen get, post y head. Cada método especifica un tipo diferente de contacto entre el cliente y el servidor. Debido a la simplicidad del protocolo http, el tamaño del programa del servidor http es pequeño y la velocidad de comunicación es muy rápida.
(3) HTTP independiente y flexible
permite la transmisión de cualquier tipo de objeto de datos.
(4) Sin conexión
significa que cada conexión se limita a procesar una sola solicitud. El servidor procesa la solicitud del cliente, luego responde y se desconecta después de recibir la respuesta. Este método puede ahorrar tiempo de transmisión.
(5)
http sin estado es un protocolo sin estado. Sin estado significa que el protocolo no tiene capacidad de memoria para el procesamiento de transacciones. Una desventaja de este método es que si el procesamiento posterior requiere el uso de información previa, ésta debe ser retransmitida, lo que resulta en un aumento en la cantidad de datos transmitidos por conexión. La ventaja es que si las conexiones posteriores no requieren la información proporcionada anteriormente, la respuesta será más rápida. Para resolver las características sin estado de http, aparecieron las tecnologías de sesión y cookies.