`
akka_li
  • 浏览: 20290 次
社区版块
存档分类
最新评论

HTTP 请求消息的结构

阅读更多
REST 服务是通过标准 HTTP 请求来访问的,一个完整的 HTTP 请求由三个部分组成:请求行(Request Line)、消息头(Message Headers)和消息体(Entity Body),消息头与消息体之间通过空行(没有内容的行,即只有回车符和换行符)来分隔。
请求行(Request Line)

请求行由三个标记组成:请求方法、请求 URI 和 HTTP 版本,它们用空格分隔。
例如:GET /news.asp HTTP/1.1
消息头(Message Headers)

由域名/值对组成,每行一对,域名和值之间用紧跟的英文冒号(“:”),单空格(SP)分开。消息头通知服务器有关于客户端的功能和标识。如 Host: http://demo.com:80 表示请求的资源所在的主机和端口号,在 HTTP/1.1 协议中,Host 消息头是必选的。还可以有其他一些如 Accept-Charset、Accept-Encoding、Authorization 等等,详见 RFC1945,RFC2616。
消息体(Entity Body)

HTTP 消息的消息体(如果存在),用于携带与请求相关联的数据,例如可以存一些请求需要的参数等。由消息头中的 Content-Length 或 Transfer-Encoding 来指示。消息头里的 Content-Type 说明了数据的传输类型。
一个完整的带消息体的 HTTP 请求示例如下:

POST /news.asp HTTP/1.1
Host: demo.com:80
Content-Length: 15

[a=1,(b=2,c=3)]

转自:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/6.1.1/iServerJavaOnlineHelp/mergedProjects/SuperMapiServerRESTAPI/clientBuildREST/HTTP_structure.htm

分享到:
评论
4 楼 akka_li 2016-06-16  
以上这些都是个人理解,之所以贴上来,是为了记录,同时让大家找错的哈,这样自己的理解才能更加完善!
3 楼 akka_li 2016-06-16  
解答2楼的问题:
a.其实form标签有个enctype属性,默认值是application/x-www-form-urlencoded,浏览器会根据form标签的这个属性值来以不同的格式拼接form中的字段与值,当enctype取默认值时,浏览器是把form中的各个字段及值拼接成如下格式的字符串:key1=val1&key2=val2,此字串作为http报文的消息体,enctype属性会成为http消息头中的Content-type的值。
b.当此http报文到达对应地址的servlet容器时,容器会解析http报文,转成HttpServletRequest对象,在这个解析过程中,会取得Content-type的值,若值为application/x-www-form-urlencoded,那么就会按key1=val1&key2=val2格式把http报文的消息体解析出来,此时就能通过request.getParameter()方法取得form提交的各个字段了
2 楼 akka_li 2016-06-16  
针对上面的描述,提出以下问题:
a.浏览器把form中的各个字段和值拼成的串是什么样式的?
b.为什么服务端的servlet能从HttpServletRequest中使用request.getParameter("form中字段名")取得页面form中提交的值?
1 楼 akka_li 2016-06-16  
应用场景具体到某个jsp页面上时,当点击某个form的提交按钮后,【浏览器】会把form中需要提交的各个字段和值拼成一个字符串作为http消息的消息体,再根据form标签的method、action等属性来设置http报文的请求行和消息头。

相关推荐

    HTTP请求流程

    ### HTTP请求消息结构 一个完整的HTTP请求消息由以下几部分组成: 1. **请求行**:包含请求方法、请求的URI和HTTP版本。 - 请求方法:GET、POST等。 - URI:统一资源标识符。 - HTTP版本:如HTTP/1.1。 2. **...

    ftp客户端软件

    #### HTTP请求消息结构 HTTP请求消息通常包含以下几个部分: 1. **请求行**:包含请求方法(GET、POST、PUT、DELETE等)、请求URI(统一资源标识符)以及HTTP协议版本。 - **请求方法**:GET用于获取资源;POST...

    Web应用安全:HTTP消息结构.pptx

    HTTP消息结构 HTTP消息结构 HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到...

    2021-2022计算机二级等级考试试题及答案No.14077.docx

    1. HTTP请求消息结构:HTTP请求消息由开始行、消息头和消息体三部分组成。开始行描述了请求的类型,比如GET或POST。消息头包含了客户端发送给服务器的附加信息,如Accept(接受的媒体类型)、User-Agent(用户代理...

    计算机二级Web程序设计模拟卷(三).doc

    3. **HTTP请求消息结构**:HTTP请求消息通常包含开始行、消息头,但可以不包含消息体实体数据。如果请求不需要发送数据,例如GET请求,消息体可以为空。 4. **DOM(Document Object Model)**:DOM是控制文档结构的...

    2022年计算机二级《Web程序设计》习题及答案.docx

    6. **HTTP请求消息结构**:HTTP请求消息由开头行(请求行)、消息头和可选的消息体实体数据组成,但可以不包含消息体实体数据。 7. **DOM**:Document Object Model(DOM)是HTML和XML文档的树形结构表示,用于处理...

    2021-2022计算机二级等级考试试题及答案No.12278.docx

    HTTP请求消息结构 - **知识点概述**:HTTP(Hypertext Transfer Protocol)请求消息由三部分组成:开始行、消息头和消息体。开始行包含请求方法、请求URL和使用的HTTP版本;消息头包含客户端和服务端之间传递的元...

    消息日志表结构.sql

    spring boot 集成rabbitMQ保证消息的可靠性中消息日志表的结构sql脚本.

    常用MAP消息体结构说明.

    例如,`mmMAP_OPEN_REQ_T`代表MAP OPEN业务的请求消息,其中包含了对话标识(DigId)、事件标识(InvkId)、应用上下文值(ACValue)、版本号(ACVer)等信息。对应的响应消息`mmMAP_OPEN_RSP_T`则包含结果(Result...

    JavaWeb开发技术-HTTP请求行.pptx

    HTTP请求消息的结构除了请求行之外,还包括: - **请求头(Request Headers)**:提供有关请求的额外信息,如用户代理、接受的媒体类型、编码、语言等。 - **空行**:请求头和实体内容之间的分隔符。 - **实体内容...

    C# HTTP/Https 请求demo

    - HTTPS(安全超文本传输协议)是在HTTP的基础上加入了SSL/TLS层,提供数据加密、服务器身份验证和消息完整性检查,确保了数据在传输过程中的安全性。 2. **GET和POST请求**: - GET请求是HTTP中最常见的请求方法...

    http网页请求过程分析工具

    1. 状态行:包含HTTP版本、状态码(如200表示成功,404表示未找到,500表示服务器内部错误)和状态消息。 2. 响应头部:包含服务器返回的有关响应的信息,如Content-Type(内容类型)、Server(服务器信息)等。 3...

    servlet上传文件(前)----得到http请求消息的内容

    本文将详细讲解如何通过Servlet实现文件上传的功能,重点在于解析HTTP请求消息的内容,以便获取并处理上传的文件数据。 首先,我们需要了解HTTP请求的基本结构。一个HTTP请求通常包括请求行、请求头和请求体。在...

    http异步请求例子源码

    在VC6.0中,可以使用`SetWindowsHookEx`设置消息钩子,或者使用`OVERLAPPED`结构配合`WSAAsyncSelect`或`WSAEventSelect`进行事件驱动编程。 5. **读取响应数据**:在回调函数中,使用`InternetReadFile`函数异步地...

    http协议请求响应详解

    2. **发送请求信息**:客户端通过连接向服务器发送HTTP请求消息。 3. **发送响应信息**:服务器接收到请求后,处理请求并返回HTTP响应消息。 4. **关闭连接**:完成一次请求响应过程后,客户端与服务器之间的TCP连接...

    纯C实现的http请求,很好用

    1. **HTTP协议**:理解HTTP的工作原理,包括请求方法、状态码、头信息、请求/响应结构等。 2. **C语言编程**:掌握C语言的基本语法和数据结构,如指针、结构体、函数等,以便与库进行交互。 3. **网络编程**:熟悉套...

    【Delphi】http post请求 webservices接口

    在Delphi编程环境中,开发人员经常需要与Web服务进行交互,这通常涉及到HTTP POST请求和SOAP(简单对象访问协议)协议。本篇文章将深入探讨如何在Delphi中使用HTTP POST方法来调用基于Web Services的SOAP接口。 ...

    行业分类-设备装置-SIP多媒体系统中请求消息的传输方法及设备.zip

    总结来说,SIP多媒体系统中的请求消息传输涉及到协议原理、消息结构、传输方法、设备交互等多个层面。理解这些知识点对于开发、部署和维护SIP系统至关重要,同时也有助于提升多媒体通信的安全性和可靠性。

    从移动终端传送寻呼请求消息的方法.zip

    5. **寻呼请求消息结构**:寻呼请求消息包含移动设备的国际移动用户识别码(IMSI)、随机化序列以及其他必要信息,以确保网络能正确识别并连接到请求的设备。 6. **安全机制**:在传送寻呼请求消息时,为了保护用户...

Global site tag (gtag.js) - Google Analytics