一个http请求包括三个组成部分
1,方法---统一资源标示符(URI) 协议/版本
2,请求的头部
3,请求的主体
下面是一个例子
POST /examples/default.jsp HTTP/1.1
Accept:text/plain;text/html
Accept-Language:en-gb
Connection:Keep-Alive
Hosst:localhost
User-Agent:Mozilla/4.0
Content-Length:33
Content-Type:application/x-www-form-urlencoded
Accept-Encoding:gzip,defate
POST /examples/default.jsp HTTP/1.1
这里POST是请求方法,/examples/default.jsp是URI,而HTTP/1.1是协议/版本部分
每个HTTP请求可以使用HTTP标准里边提到的多种方法之一。HTTP 1.1支持7种类型的请求:GET, POST, HEAD, OPTIONS, PUT, DELETE和TRACE。GET和POST在互联网应用里边最普遍使用的。
请求的头部包含了关于客户端环境和请求的主体内容的有用信息。例如它可能包括浏览器设置的语言,主体内容的长度等等。每个头部通过一个回车换行符(CRLF)来分隔的。
Accept
Accept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本
Accept-Language
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
Host(发送请求时,该报头域是必需的)
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,eg:
我们在浏览器中输入:http://www.guet.edu.cn/index.html
浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:www.guet.edu.cn
此处使用缺省端口号80,若指定了端口号,则变成:Host:www.guet.edu.cn:指定端口号
User-Agent
我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。
http响应
类似于HTTP请求,一个HTTP响应也包括三个组成部分
方法---统一资源标示符(URI)-----协议/版本
响应的头部
主体内容
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 5 Jan 2004 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 5 Jan 2004 13:13:12 GMT
Content-Length: 112
<html> <head> <title>HTTP Response Example</title> </head> <body>
Welcome to Brainy Software </body> </html>
响应头部的第一行类似于请求头部的第一行。第一行告诉你该协议使用HTTP 1.1,请求成功(200=成功),表示一切都运行良好。 响应头部和请求头部类似,也包括很多有用的信息。响应的主体内容是响应本身的HTML内容。头部和主体内容通过CRLF分隔开来。
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
分享到:
相关推荐
"HTTP/2协议解析及抓包分析" 本文将对HTTP/2协议进行详细的解析,并结合Wireshark抓包工具对HTTP/2协议进行抓包分析。 HTTP/2协议简介 HTTP/2是一种二进制协议,它将HTTP/1.x的Header和Body部分用Frame重新封装了...
**HTTP协议详解** HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最广泛的一种网络协议。它定义了客户端(通常是Web浏览器)与服务器之间的通信格式,用于从万维网服务器传输超文本到本地浏览器...
10. 版本升级:随着互联网的发展,HTTP协议也在不断演进,如HTTP/1.1、HTTP/2和最新的HTTP/3,后者引入了QUIC协议来解决TCP的延迟和拥塞问题。 理解HTTP协议的本质对于开发Web应用程序、优化网站性能、调试网络问题...
2. **理解HTTP协议的工作机制**:通过对捕获的报文进行分析,进一步理解HTTP协议如何在客户端与服务器之间进行通信,包括连接的建立、请求与响应的过程等。 #### 实验内容及步骤详解 1. **启动Ethereal并设置过滤...
**LWM2M协议详解** LWM2M(Lightweight Machine to Machine)协议是物联网(IoT)领域中一种轻量级的管理协议,旨在提供设备管理和数据交换的标准方法。LWM2M的设计目标是为了在资源有限的物联网设备上实现高效、...
HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client)构造一个HTTP请求报文,包括方法(GET、POST等)、URL、协议版本、头部信息和请求主体(如果有的话)。然后...
2. **简单快速**:设计时主要考虑快速传输,对数据格式的要求较为宽松,使得HTTP协议可以适应各种类型的数据传输。 3. **灵活**:HTTP允许传输任意类型的数据对象,通过Content-Type字段来标识数据类型。 4. **标准...
本示例将探讨如何在WSO2 ESB中实现协议转换,特别是从HTTP协议转换为JMS (Java Message Service) 协议。这种转换在处理异步通信或需要高可用性和持久化消息传递的场景中尤其有用。 首先,理解HTTP协议,它是基于TCP...
HTTP协议的详解电子书通常会深入探讨这些概念,包括HTTP版本的发展、请求和响应的细节、首部字段的作用、缓存机制、Cookie管理、安全问题以及HTTP/2和HTTP/3的改进等。通过学习这些内容,读者能够更全面地理解HTTP...
能够处理http协议:(1)解析 (2)构造http格式
这份"HTTP协议详解PDF"文档应该包含对HTTP协议的全面解析,涵盖了其核心概念、工作原理、请求与响应报文结构、状态码、首部字段等内容。 在HTTP协议中,主要有两种类型的操作:GET和POST。GET方法用于获取资源,而...
本文将深入探讨基于HTTP协议的自定义协议封装,特别是在使用XML作为数据载体时如何进行设计和实现。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它允许客户端(如浏览器)和服务器之间交换数据。...
HTTP协议是基于TCP/IP通信协议来传递数据的,主要用于Web浏览器与Web服务器之间的信息传输。 在HTTP协议中,通信过程通常由客户端发起请求(Request),服务器接收请求并返回响应(Response)。请求通常包含方法...
2. 发送请求报文,例如 GET / HTTP/1.1。 3. 观察服务器的响应报文。 4. 分析响应报文的各部分,包括状态行、响应头和响应体。 注意事项: * 在使用 telnet 时,需要注意服务器的安全性,以免受到攻击。 * 在实验...
2. 简单快速:HTTP 协议简单快速,客户向服务器请求服务时,只需传送请求方法和路径。 3. 灵活:HTTP 允许传输任意类型的数据对象。 4. 无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的...
HTTP 协议详解 HTTP 协议是一种应用层面的、面向对象的协议,用于分布式超媒体信息系统。它于 1990 年提出,经过多年的发展和完善,目前在 WWW 中使用的是 HTTP/1.0 的第六版,HTTP/1.1 的规范化工作正在进行中。 ...
**HTTP协议的基本概念** 1. **请求与响应**:HTTP通信主要由客户端发起请求(Request),服务器接收到请求后返回响应(Response)。请求由方法(如GET、POST)、URL、协议版本、头部和消息主体组成。响应包含状态码...