2010-02-16 3 views
5

Estoy tratando de tener un mejor sentido de las partes internas de HTTP, y con frecuencia se mencionan "entidades" y "mensajes" en la especificación, aunque parezca extraño sin una explicación adecuada, créanlo o no. De lo que reuní, uno identifica el contenido mismo, incluso cuando se divide en una cadena de solicitud/respuesta y/o transfiere reglas de fragmentación de codificación, mientras que el otro identifica el contenido de una única solicitud HTTP, es decir, lo que sigue a los encabezados y termina con un CRLF. Mi problema es que no puedo averiguar cuál es exactamente.¿Cuál es el mensaje y cuál la entidad en la terminología HTTP?

Respuesta

8

A HTTP-message es o bien una solicitud o una respuesta :

HTTP-message = Request | Response  ; HTTP/1.1 messages 

A HTTP-mensaje tiene cero o más mensaje de cabecera de ⁠s y puede tener una message-body:

generic-message = start-line 
        *(message-header CRLF) 
        CRLF 
        [ message-body ] 

Así que no todos los HTTP mensaje tiene un mensaje cuerpo. Pero si tiene un mensaje de cuerpo, entonces eso es también la entidad cuerpo:

message-body = entity-body 
       | <entity-body encoded as per Transfer-Encoding> 

Así que en resumen: Un mensaje es toda la petición o respuesta HTTP. Y la entidad es el cuerpo del mensaje (si hay alguno) y su correspondiente entity header fields.

+0

Bien, pero ¿qué es un cuerpo-entidad en lo de arriba? Consideremos una solicitud POST con tipo de contenido especificado como "multipart/form-data" que transporta datos de archivos, y un par de pares de valores variables. En la solicitud, un mensaje es la solicitud completa, el encabezado y todo, ¿verdad? El cuerpo del mensaje es el blob binario que sigue a los encabezados, ¿verdad? Lo que pasa es que creo que el cuerpo de la entidad es otra cosa ... De todos modos, como puedes ver, estoy casi tan confundido como estaba ... – amn

+1

@amn: La entidad está en el mensaje. La entidad es la suma de * entity-header * ⁠s y * entity-body * (the * message-body *). Algunos de los * encabezados de mensaje * ⁠s describen el mensaje y algunos describen la entidad. * Date *, por ejemplo, es un * message-header * (describe el mensaje) y * Content-Type * es un * entity-header * (describe la entidad). – Gumbo

+0

Sí, eso lo explica todo, ¡gracias! Pensé que un mensaje codifica y transfiere una entidad, mientras que la entidad tiene un tipo, por lo que ambos están definidos por diferentes encabezados. – amn

Cuestiones relacionadas