http协议知识整理(转)
HTTP 协议
作为web开发人员,了解一些http协议的知识很有必要。本文简单介绍了HTTP协议的知识,若有错误的地方,望大家指正。
1.HTTP协议是什么?
- http协议是一个应用层的协议。规定了浏览器和服务器之间的通信规范。通常用TCP连接方式。
2.HTTP 1.0、1.1 连接的方式。
- 在HTTP 1.0 中,浏览器和服务器使用的是短连接,响应完,立即断开。
- 请求的过程:3次握手,请求,响应,断开连接。
- http不保存连接,好处:服务器可以处理更多的连接,但是每次建立连接会降低处理速度。
- 现在主流的版本是HTTP 1.1 ,在HTTP 1.1 中我们使用长连接,一个请求结束后,不断开,继续请求。
3.HTTP协议的URL
URL的格式:
http://host[":"port][abs_path]
- host: 代表主机域名或IP地址
- port: 端口号,缺省端口80
- abs_path : 请求资源的URL,如果没有,填 "/",通常浏览器会帮我们自动完成。 EG: 1、输入:www.cnblogs.com 浏览器自动转换成:http://www.cnblogs.com/
4. HTTP请求
4.1 请求报文格式:

- HTTP的请求由3部分组成:请求行、请求头、请求体。
- SP代表空格、CRLF代表换行
- 浏览器必须以这个格式发送请求,服务器才能正常解析和响应。
4.2 请求报文示例

4.3 请求方法
- GET 请求获取Request-URI所标识的资源
- POST 在Request-URI所标识的资源后附加新的数据,常用于提交表单。
- HEAD 请求获取由Request-URI所标识的资源的响应消息报头
- PUT 请求服务器存储一个资源,并用Request-URI作为其标识
- DELETE 请求服务器删除Request-URI所标识的资源
- TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT 保留将来使用
- OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
get和post是最常用的方法,简单来说,前者用于获取数据,后者用于提交数据。
5. HTTP响应
5.1 响应报文格式:

- HTTP的响应也是由3个部分组成:响应行、响应头,响应体
- 响应行:status code 表示响应的状态码,description是描述信息。
- 同样 SP代表空格、CRLF代表换行,
- 响应必须以这种规范格式发送给浏览器,浏览器才能正常解析并显示。
5.2 响应报文示例

5.3响应码
200段是成功;300段需要对请求做进一步的处理;400段表示客户端请求错误;500段是服务器的错误 常见响应码:
- "200" : OK
- "302" : Found 重定向.
- "400" : Bad Request 错误请求,发出错误的不符合Http协议的请求
- "403" : Forbidden 禁止
- "404" : Not Found 未找到。演示访问一个不存在的页面看报文
- "500" : Internal Server Error 服务器内部错误。演示页面抛出异常。
- "503" : Service Unavailable。一般是访问人数过多。
PS:会在文章的末尾为大家提供一份HTTP状态码大全的文档。
6. HTTP消息报头
HTTP消息报头分4类:普通报头、请求报头、响应报头、实体报头 每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
6.1 普通报头
应用于所有请求和响应消息且和请求体与响应体无关的信息就存放在普通报头中。
- Cache-Control: no-cache (用于指示请求或响应消息不能缓存)
- Date 普通报头域表示消息产生的日期和时间
- Connection: close/keep-alive (是否开启长连接)
6.2 请求报头
客户端向服务器端传递请求的附加信息以及客户端自身的信息存放在请求报头 常用的请求报头:
- Accept: text/html,application/xhtml+xml,application/xml; 指定客户端接受哪些类型的信息。
- Accept-Charset: iso-8859-1,gb2312 客户端接受的字符集 (缺省是任何字符集都可以接受。)
- Accept-Encoding: gzip,deflate,sdch 可接受的内容编码。 (缺省是各种内容编码都可以接受。)
- Accept-Language: zh-CN,zh 指定语言。(缺省各种语言都可以接受。)
- Authorization 用于证明客户端有权查看某个资源
- Host: www.cnblogs.com 被请求资源的Internet主机和端口号 (缺省端口号:80) 这个报头是必需的
- User-Agent: Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) 操作系统、浏览器和其它属性
6.2 响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。 常用的响应报头:
- Location 响应报头域用于重定向接受者到一个新的位置
- Server:Apache-Coyote/1.1 服务器信息
6.3 实体报头
请求和响应消息都可以传送一个实体。 常用的实体报头:
- Content-Encoding: gzip 内容编码
- Content-Language: zh-CN 语言
- Content-Length: 10 实体正文的长度
- Content-Type: text/html;charset=GB2312 返回数据的类型
- Last-Modified 实体报头域用于指示资源的最后修改日期和时间。
- Expires:Thu,15 Sep 2006 16:23:12 GMT 响应过期的日期和时间。
参考文献
HTTP协议详解 HTTP 状态码大全文档下载 Content-Type文档下载
http://www.cnblogs.com/simple-blog/p/4377647.html
http协议知识整理(转)的更多相关文章
- http协议知识整理
HTTP 协议 作为web开发人员,了解一些http协议的知识很有必要.本文简单介绍了HTTP协议的知识,若有错误的地方,望大家指正. 1.HTTP协议是什么? http协议是一个应用层的协议.规定了 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- 【转】WIFI基本知识整理
WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种 ...
- [转帖]NSA武器库知识整理
NSA武器库知识整理 https://www.cnblogs.com/FrostDeng/p/7120812.html 美国国家安全局(NSA)旗下的“方程式黑客组织”(shadow brokers) ...
- Redis相关知识整理
Redis相关知识整理 1. Redis和MySQL的区别?a).mysql是关系型数据库,而redis是NOSQL,非关系型数据库.mysql将数据持久化到硬盘,读取数据慢,而redis数据先存储在 ...
- js事件(Event)知识整理
事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
随机推荐
- 大数据时代的精准数据挖掘——使用R语言
老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
- Cocos2dx中Plugin-X 在android下的整合
直接拉plugin-x中的jar包导入到Eclipse中就可以.用这么麻烦的工具干嘛.
- 四张类图理一下Streams的用法
首先是输出流 OutputStream.继承它的类有两种,一种是底层实现(纯继承OutputStream的类),一种是格式转换(组合了OutputStream的类). 所谓的底层实现,就是真正和物理存 ...
- [C++STDlib基础]关于日期时间的操作——C++标准库头文件<ctime>
总结 /* A.头文件<ctime> #if _GLOBAL_USING && !defined(RC_INVOKED) _STD_BEGIN 1.四个数据类型 using ...
- 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API
原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...
- js封装的类似java StringBuilder类
使用js的时候,经常会使用字符串拼接,但是在IE6和IE7没有对+作优化,所以性能会很低,鉴于此,我封装了StringBuilder类,用于拼接字符串,直接把代码贴出来如下: function Str ...
- 一步步学习Linux开发环境搭建与使用
00.Linux开发环境搭建与使用1--Linux简史 01.Linux开发环境搭建与使用2--Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3--通过虚拟机安装系统(ub ...
- Python使用cx_Oracle模块连接操作Oracle数据库
1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...
- 理解Spring的Bean工厂
一提到工厂,我们先来回顾前面学习过的工厂方法和抽象工厂模式: 工厂方法:针对产品维度,能够产生新的产品,也能够产生新的产品工厂,既能够扩展产品维度.可是假设我们想在普通工厂上生产产品系列,就会特别麻烦 ...
- 使用ILmerge合并Exe、Dll文件的帮助类
原文:使用ILmerge合并Exe.Dll文件的帮助类 using System; using System.Collections.Generic; using System.Text; using ...