• HTTP 协议规定了浏览器和服务器之间互相通信的规则.

    • 请求协议: 规定了客户端发送给服务器的内容格式
    • 响应协议: 服务器发送给客户端的内容格式

请求协议

  • 请求协议格式:

    • 请求行
    • 多个请求头信息(属性名:属性值)
    • 空行
    • 请求体
// 请求行: 请求方式  请求的资源路径  http 协议版本
GET https//www.baidu.com HTTP/1.1 // 浏览器支持的 MIME 类型
Accept:text/html,application/xhtml+xml,application/xml;image/webp,image/apng,*/*; // 浏览器支持的压缩格式
Accept-Encoding:gzip, deflate // 浏览器支持的语言
Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4 // 主机
Host:www.baidu.com // 浏览器型号和操作系统型号
User-Agent: Connection:keep-alive

响应协议

  • 响应协议格式:

    • 响应行
    • 响应头(属性名:属性值)
    • 空行
    • 响应体
// 响应行: http 协议版本  响应状态码  响应状态码的解释
HTTP/1.1 200 OK // 缓存处理
Cache-Control:no-cache Connection:Keep-Alive // 响应内容压缩格式
Content-Encoding:gzip // 响应内容的 MIME 类型, 文本类型的内容需要指定编码
Content-Type:text/html;charset=utf-8 // 响应时间
Date:Fri, 22 Sep 2017 03:12:21 GMT // 服务器的版本信息
Server:apache // 服务器响应给客户端的 Cookie
Set-Cookie:BDSVRTM=453; path=/ // 响应的文件大小
Content-Length: 646

响应状态码

  • 200 : 请求成功
  • 以"3"开头,全要转接
    • 302 : 重定向, 表示服务器要求浏览器重新发送一个请求,

      服务器会在响应信息中加入一个 Location, 它指定了浏览器需要重新请求的 URL 地址
    • 304 : 与缓存相关, 只对静态类型( 如 html) 文件有效
  • 以"4"开头: 客户端错误
    • 404 : 请求的资源没有找到, 即客户端错误的请求了不存在的资源
  • 以"5"开头: 服务端错误

其他响应头

  • 下面三样响应头一起使用, 目的是告诉浏览器不要缓存

    • Expires: -1;
    • Cache-Control: no-cache;
    • Pragma: no-cache;
  • 自动刷新响应头
    • Refresh:3;url=http://baidu.com
    • 表示浏览器会在 3 秒之后请求 http://baidu.com

HTML 中指定响应头

  • 在 HTML 页面中可以使用 "<meta http-equiv="属性名" content="属性值"> 来指定响应头

GET 和 POST 请求

  • GET 请求没有请求体
  • POST 请求可以有请求体
// POST 请求

// Referer: http://localhost:8080/hello/index.jsp
// 表示请求来自哪个页面. 而在浏览器地址栏中直接输入的地址, 没有 Referer 请求头
// 可以通过 Referer 统计访问量或者防盗链 // Content-Type: application/x-www-form-urlencoded
// 表示表单中的数据会自动使用 url 进行编码 // url 编码的数据都是以 "%" 为前缀, 后面跟随两位的 16 进制.
// "张三" 的 url 编码结果: %E5%BC%A0%E4%B8%89

**参考资料:**
- [JavaWeb 视频教程](https://www.bilibili.com/video/av12752958/#page=14)

HTTP 协议介绍的更多相关文章

  1. TCP/IP 协议介绍

    转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...

  2. 第二章 ZAB协议介绍

    ZAB ( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)是zookeeper数据一致性的核心算法. ZAB 协议并不像 Paxos 算法那样,是一种 ...

  3. JSON-RPC轻量级远程调用协议介绍及使用

    这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...

  4. [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    [转]流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls) http://blog.csdn.net/tttyd/article/details/12032357 RTP       ...

  5. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

  6. 常用音频协议介绍&&有关音频编码的知识与技术参数

    (转载)常用音频协议介绍 会议电视常用音频协议介绍及对比白皮书 一.数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线.通常人耳可以听到的频率在20 ...

  7. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...

  8. OSPF协议介绍及配置 (上)

    OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ...

  9. VRRP协议介绍--转

    http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...

  10. SNMP协议介绍

    SNMP协议介绍 一.什么是SNMP SNMP:“简单网络管理协议”,用于网络管理的协议.SNMP用于网络设备的管理.SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了 “读”操作:管理 ...

随机推荐

  1. iptables 使用

    原文链接 本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础.架构.清空规则.追加规则.应用实例,看完这篇文章,你就能明白ipt ...

  2. highCharts+Struts2生成柱状图

    这篇文章主要结合Struts2+json+Highcharts实现动态数据的显示.为了节省时间,就不写数据库了.在action中用一个集合来模拟从数据库取到的数据.模拟数据为三个学生在不同时间成绩的变 ...

  3. 【BZOJ】2101: [Usaco2010 Dec]Treasure Chest 藏宝箱(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2101 这个dp真是神思想orz 设状态f[i, j]表示i-j先手所拿最大值,注意,是先手 所以转移 ...

  4. html table 上移下移

    js操作表格操方法,增加,修改,删除,一行记录 随机选择行 添加一行 删除选定行 上移选定行 下移选定行 按第一列排序 按数据和排序   <!DOCTYPE html PUBLIC " ...

  5. WPF通过异常来验证用户输入

    在WPF中使用数据绑定,如果用户输入和绑定类型转换失败,控件就会显示出现错误的模板, 比如一个Textbox绑定到一个int 属性,如果用户输入一个string,那这个textbox就会显示错误模板, ...

  6. 化学绘图软件ChemDraw真的什么都能干!

    今天要介绍的就是一款无所不能的化学绘图软件——ChemDraw,绘制平面化学结构.生成立体化学模型.查询化学信息.编写化学脚本.计算化学数据等等,堪称化学界的必备神器. 化学软件ChemDraw免费获 ...

  7. visio中设置下标

    下标:ctrl+"=" 上标:ctrl+shift+"="

  8. VC++ 带界面的ActiveX控件

    一.新建MFC ActiveX工程OleHasInterface: 二.新建一个对话框资源,ID为 IDD_FORMVIEW,关联类CActXInterfaceDlg,基类CDialog: 三.设计对 ...

  9. 两天学会DirectX 3D之第二天

    提要 前几天非常easy地跑了一个DirectX 9 程序,以为DirectX就那么绘制,事实证明有点Naive了. 之前的那个程序最多也就是个固定流水线的东西. 可是今天要用DirectX11来写一 ...

  10. 机房收费系统(VB.NET)——超具体的报表制作过程

    之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...