HTTP定义
1 HTTP协议(超文本传输协议)是因特网上应用最为广泛的一种网络传输协议。
是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
2 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
从上面可以得到结论:
1 还是有其它协议的,只不过HTTP协议市场占有率最高。比如文件传输的协议ftp,当然,现在一般都用sftp了;还有邮件传输协议,mail:
2 HTTP协议可以传输数据,其实这些数据才是我们最本质的东西
HTTP常见知识
1 HTTP是无连接的,每次连接处理一个请求,然后就断开连接了;这样可以节省传输时间
2 任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3 HTTP是无状态的,对于事务处理没有记忆能力。如果后续处理需要前面的信息,则必须重传。
4 默认端口是80,常见的服务器是Apache服务器和IIS服务器。
消息结构


常用方法
| 方法 | 描述 |
|---|---|
| GET | 从服务器获取一份文档 |
| POST | 向服务器发送需要处理的 |
| PUT | 将请求的主题部分存储在服务器上 |
| DELETE | 从服务器删除一份文档 |
| HEAD | 只从服务器获取头文档的首部 |
| TRACE | 对可能经过代理服务器传送到服务器上的报文进行追踪 |
| OPTIONS | 决定可以在服务器上执行的方法 |
- GET和POST的区别
简单的说:GET传输,参数是明文显示,会跟在请求网址后面
POST传输会把参数打包到请求主体中

上面就是用的GET请求,账号啊,密码啊都跟在请求后面,可以看见

百度这里对密码加密了,而且POST请求在地址后面也不会跟着用户名和密码 - GET请求可被缓存,POST不能
- GET请求保留在浏览器历史记录中,POST不能
- GET请求可被收藏为书签,POST不能
- GET请求不应该在处理敏感数据时使用
- GET请求有长度限制
- GET请求只应当用于取回数据
这里进行一下对比
| 区别 | GET | POST |
|---|---|---|
| 后退按钮/刷新 | 没有影响 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交) |
| 书签 | 可收藏未书签 | 不可收藏为书签 |
| 缓存 | 可被缓存 | 不能缓存 |
| 编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码 |
| 历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中 |
| 数据长度 | 有限制,当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL的最大长度是2048个字符)。 | 无限制 |
| 数据类型 | 只允许ASCII字符 | 没有限制。也允许二进制数据 |
| 安全性 | 与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝对不要使用GET | POST比GET更安全,因为参数不会被保存在浏览器历史或者WEB服务器日志中 |
| 可见性 | 数据在URL中对所有人都是可见的 | 数据不会显示在URL中 |
HTTP的响应头
从外面诸多博客偷点图
| Header | 说明 | 示例 |
|---|---|---|
| Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html |
| Accept-Charset | 浏览器可以接受的字符编码集 | Accept-Charset: iso-8859-5 |
| Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
| Accept-Language | 浏览器可接受的语言 | Accept-Language: en,zh |
| Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
| Authorization | HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
| Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
| Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
| Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器 | Cookie: $Version=1; Skin=new; |
| Content-Length | 请求的内容长度 | Content-Length: 348 |
| Content-Type | 请求的与实体对应的MIME信息 | Content-Type: application/x-www-form-urlencoded |
| Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
| Expect请求的特定的服务器行为 | Expect: 100-continue | |
| From | 发出请求的用户的Email | From: user@email.com |
| Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
| If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
| If-Modified-Since | \如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
| If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
| If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag | If-Range: “737060cd8c284d8af7ad3082f209582d |
| If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
| Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
| Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
| Proxy-Authorization | 连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
| Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
| Referer | 先前网页的地址,当前请求网页紧随其后,即来路 | Referer: http://www.zcmhi.com/archives/71.html |
| TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
| Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
| User-Agent | User-Agent的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
| Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
| Warning | 关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
然后响应部分其实差不多,可以百度看下,多的很
HTTP版本及状态码
HTTP/0.9 1991年的HTTP原型,有设计缺陷
HTTP/1.0 第一个广泛应用的版本
HTTP/1.0+ 添加持久的KEEP-ALIVE连接,虚拟主机支持,代理连接支持,成为非官方的事实版本
HTTP/1.1 校正结构性缺陷,明确语义,引入重要的性能优化措施,删除不好的特性
状态码
| 状态码 | 解释 |
|---|---|
| 200 | 请求成功 |
| 301 | 资源移动,浏览器自动跳转到新的URL |
| 304 | 未修改,请求资源未修改,浏览器读取缓存数据 |
| 400 | 请求语法错误,服务器无法解析 |
| 404 | 未找到资源,可以设置个性404页面 |
| 500 | 服务器内部错误 |
本文深入讲解HTTP协议的基础概念,包括其定义、特点、消息结构、常用方法与响应头,以及HTTP版本与状态码的详细解读。
5183

被折叠的 条评论
为什么被折叠?



