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/
- abs_path : 请求资源的URL,如果没有,填 "/",通常浏览器会帮我们自动完成。
2、http:192.168.0.116:8080/index.jsp
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: text/html; charset=utf-8 压缩算法
- 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://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
HTTP 状态码大全下载
http://pan.baidu.com/s/1kTGaXAv
Content-Type下载
http://pan.baidu.com/s/1qWjwHkw
编程并没有捷径,真正的成长都是来源于实践、思考和总结。
搬运自:http://www.cnblogs.com/simple-blog/p/4377647.html
HTTP 协议整理(转)的更多相关文章
- MODBUS协议整理——功能码简述
1.Modbus简介——来自维基百科 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的.Modbus是工业领域通信协议的业界标准,并且现在是工业电 ...
- 欧姆龙PLC HostLink协议整理
欧姆龙PLC HostLink协议整理 1.常用的存储器功能区 CIO: 输入继电器 272 点(17 CH) 0.00-16.15 输出继电器 272 点(17 CH) 100.00-116.1 ...
- AHB协议整理 AMBA
本文对AHB协议作了简单整理,整理自两篇文章: AHB总线协议 AHB重点难点总结 1. 简介 AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计 ...
- SIP协议整理
本文记录开发.实现IMS项目时,整理的SIP协议基础知识:若有侵权,请告之. SIP协议 1. SIP协议简介 SIP是一个应用层的控制协议,可以用来建立.修改.和终止多媒体会话(或者会议) ...
- HTTP协议整理
一.概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从 ...
- 学习笔记之TCP/IP协议分层与OSI參考模型
1.协议的分层 ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...
- 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨 ...
- 直播推流实现RTMP协议的一些注意事项
—— 2017-2-12 更新RTMP 协议整理了一下,包括rtmp 消息类型,rtmp 如何分块,rtmp分块例子. 用脑图整理了一下,使用Xmind 打开,URL: https://github. ...
- PHP安全之Web攻击
一.SQL注入攻击(SQL Injection) 攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态 ...
随机推荐
- WPF入门教程系列二十二——DataGrid示例(二)
DataGrid示例的后台代码 1) 通过Entity Framework 6.1 从数据库(本地数据库(local)/Test中的S_City表中读取城市信息数据,从S_ Province表中读取 ...
- C#中通过反射方法获取控件类型和名称
这个方法是简单的也是神奇的. 有木有想过,将自己项目中的所有类型,包括自定义类型的命名空间和名称全部获取出来? 有木有想过,有一种简便的方法可以自动化管理项目中的控件和窗体? 有木有想过... 首先, ...
- TortoiseSVN Clean up 失败的处理方法
当使用 TortoiseSVN 下载项目失败之后,重新下载之前需要 Clean up,在 TortoiseSVN 中 Clean up 总是失败. 在命令行行中执行 svn cleanup 就成功 ...
- 了解Package Configurations
使用VS2010创建的SSIS Project有两种deployment model:project deployment 和 package deployment,默认是Project deploy ...
- 解密jQuery事件核心 - 委托设计(二)
第一篇 http://www.cnblogs.com/aaronjs/p/3444874.html 从上章就能得出几个信息: 事件信息都存储在数据缓存中 对于没有特殊事件特有监听方法和普通事件都用ad ...
- Building OpenCASCADE on Debian
Building OpenCASCADE on Debian eryar@163.com Abstract. When you are familiar with OpenCASCADE on Win ...
- Torch学习笔记1--Torch简介
Torch是什么 Torch是一个由Lua语言开发的深度学习框架,目前支持Mac OS X 和Ubuntu 12及以上,官网 ,github地址. 具有如下特点: 交互式开发工具 可视化式的工具 第三 ...
- ASP.NET Core的配置(4):多样性的配置来源[下篇]
我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationPro ...
- 创建外网 ext_net - 每天5分钟玩转 OpenStack(104)
虽然外部网络是已经存在的网络,但我们还是需要在 Neutron 中定义外部网络的对象,这样 router 才知道如何将租户网络和外部网络连接起来. 上一节我们已经为创建外部网络配置了ML2,本节将通过 ...
- 数据可视化-EChart2.0使用总结2
接上一篇博客,这篇博客主要讨论EChart里面的散点图.气泡图和雷达图. 4.散点图-Scatter Chart 适合场景:三维数据集,但是只有两个维度需要比较.比较的是X轴和Y轴的数据,第三个数 ...