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/

      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 协议整理(转)的更多相关文章

  1. MODBUS协议整理——功能码简述

    1.Modbus简介——来自维基百科 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的.Modbus是工业领域通信协议的业界标准,并且现在是工业电 ...

  2. 欧姆龙PLC HostLink协议整理

    欧姆龙PLC HostLink协议整理 1.常用的存储器功能区 CIO: 输入继电器  272 点(17 CH) 0.00-16.15 输出继电器  272 点(17 CH) 100.00-116.1 ...

  3. AHB协议整理 AMBA

    本文对AHB协议作了简单整理,整理自两篇文章: AHB总线协议 AHB重点难点总结 1. 简介 AHB总线规范是AMBA总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计 ...

  4. SIP协议整理

    本文记录开发.实现IMS项目时,整理的SIP协议基础知识:若有侵权,请告之. SIP协议 1.      SIP协议简介 SIP是一个应用层的控制协议,可以用来建立.修改.和终止多媒体会话(或者会议) ...

  5. HTTP协议整理

    一.概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从 ...

  6. 学习笔记之TCP/IP协议分层与OSI參考模型

    1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...

  7. 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨 ...

  8. 直播推流实现RTMP协议的一些注意事项

    —— 2017-2-12 更新RTMP 协议整理了一下,包括rtmp 消息类型,rtmp 如何分块,rtmp分块例子. 用脑图整理了一下,使用Xmind 打开,URL: https://github. ...

  9. PHP安全之Web攻击

    一.SQL注入攻击(SQL Injection) 攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态 ...

随机推荐

  1. OpenGL学习进程(13)第十课:基本图形的底层实现及算法原理

        本节介绍OpenGL中绘制直线.圆.椭圆,多边形的算法原理.     (1)绘制任意方向(任意斜率)的直线: 1)中点画线法: 中点画线法的算法原理不做介绍,但这里用到最基本的画0<=k ...

  2. c# 文件属性读取操作及文件之间操作

    c# 获取文件最后修改日期代码FileInfo f = new FileInfo(@"c:\1.txt");Console.WriteLine(f.LastWriteTime.To ...

  3. jQuery源码分析系列(33) : AJAX中的前置过滤器和请求分发器

    jQuery1.5以后,AJAX模块提供了三个新的方法用于管理.扩展AJAX请求,分别是: 1.前置过滤器 jQuery. ajaxPrefilter 2.请求分发器 jQuery. ajaxTran ...

  4. AOE网的关键路径的计算

    求关键路径,只需理解顶点(事件)和边(活动)各自的两个特征属性以及求法即可: Ø  先根据首结点的Ve(j)=0由前向后(正拓扑序列)计算各顶点的最早发生时间 Ø  再根据终结点的Vl(j)等于它的V ...

  5. .NET平台开源项目速览(4).NET文档生成工具ADB及使用

    很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...

  6. jQuery.unique引发一个血案

    项目开发过程中,PM说系统只要在一个特定的浏览器中运行就好,但是在其他的浏览器中不能出现逻辑的错误,所以在开发过程中,前端和后台选择是Chrome浏览器,没有仔细测试Firefox和IE.但是昨天PM ...

  7. 哪些HTML5特性值得期待

    首先大家可以看一下<HTML5程序设计(第二版)>最后一章关于HTML5未来展望.地址:http://www.ituring.com.cn/article/1690?q=html5%E6% ...

  8. Git 冲突合并

    在多人协作开发,经常遇到Git冲突,每次都不大记住命令.所以自己备注一下! git pull 之后有冲突: $ git pullremote: Counting objects: 5, done.re ...

  9. Expression Template(表达式模板,ET)

    1.前言 在前一篇文章自己实现简单的string类中提到在实现+操作符重载函数时,为了防止返回时生成的临时对象调用拷贝构造函数动态申请内存空间,使用了一个叫move的函数,它是C++0x新增的特性.既 ...

  10. ASP.NET MVC Authorization 自定义跳转

    应用场景:在 ASP.NET MVC 应用程序中,需要对用户身份权限进行验证,比如没有登录或者不符合权限的用户,访问 Action 的时候,跳转到指定页面. 重写 Authorize: public ...