参考内容:

    关于HTTP协议,一篇就够了

    理解HTTP协议

    HTTP 协议入门

    超文本传输协议- 维基百科,自由的百科全书

    HTTP

  昨天通过读文档、读博文、看教程学习了一下HTTP协议,发现真是“天下文章一大抄”,这种现象无可厚非,毕竟知识本身也就只有那些内容,并且博文里也注明了参考链接,大家也都见怪不怪了,但是连很明显的病句都是一模一样,那就有点尴尬了。我写学习笔记肯定也会“抄”(哈哈,piapia打脸)。

一、协议概述

  超文本传输协议是(英语:HyperText Transfer Protocol,缩写:HTTP)是一个客户端和服务端之间请求和应答的标准,主要规定了客户端与服务器之间的通信格式,通常使用TCP协议(尽管TCP/IP协议是互联网上最流行的应用,但是在HTTP协议中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层)。

  HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

二、请求方法

  请求方法是客户端告诉服务器其动作意图的方法,区分大小写,HTTP/1.1协议中共定义了8种方法(也叫“动作”)来以不同方式操作指定的资源。

  •   GET      请求指定的资源。使用GET的请求应该只用于获取数据。
  •   POST     发送数据给服务器,请求主体的类型由 Content-Type首部指定。
  •   HEAD     请求资源的头部信息, 并且这些头部与GET方法请求时返回的一致。
  •   PUT      使用请求中的数据替换目标资源。
  •   DELETE    用于删除指定的资源。
  •   OPTIONS    用于获取服务器所支持的方法。
  •   CONNECT    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
  •   TRACE     实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。
  •    PATCH     用于对资源进行部分修改。(由RFC 5789指定的方法)

三、状态码

  所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

  状态码的第一个数字代表当前响应的类型:

    •   1XX  消息     请求已被服务器接收,继续处理
    •   2XX  成功     请求已成功被服务器接收、理解并接受
    •   3XX  重定向    需要后续操作才能完成这一请求
    •   4XX  客户端错误  请求含有语法错误或无法被执行
    •   5XX  服务器错误  服务器在处理某个正确请求时发生错误

  常用状态码:

    • 200 OK                     客户端请求成功
    • 302 Found                  临时重定向。该状态码表示请求的资源已经被分配了新的URL,但是和301的区别是302代表的不是永久性的移动,只是临时的。
    • 400 Bad Request            客户端请求有语法错误,不能被服务器所理解,需要修改后再次发送。
    • 401 Unauthorized           请求未经授权,需要有通过HTTP认证的认证信息。这个状态代码必须和WWW-Authenticate报头域一起使用。
    • 403 Forbidden              服务器收到请求,但是拒绝提供服务,因为没有获得服务器访问权限、IP被禁止等。
    • 404 Not Found              请求资源不存在。也可以在服务器拒绝请求且不想说明理由时使用。
    • 500 Internal Server Error  服务器发生不可预期的错误,很有可能是服务端程序的Bug或者临时故障。
    • 503 Server Unavailable     服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上情况需要的时间,最好写入Retry-After字段再返回给客户端。
    • 504 Gateway Timeout        网关超时,是代理服务器等待应用服务器响应时的超时,和408 Request Timeout的区别就是504是服务器的原因而不是客户端的原因。

四、待续

  HTTP的知识还有很多,诸如报文、URL、版本等等,这里写不动了,不写了。

HTTP学习笔记01的更多相关文章

  1. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  2. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

  3. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

  4. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  5. PHP 学习笔记 01

    例子: 为什么要学PHP 主观原因: 前段时间在学校处理了毕业的一些事情,回到上海后开始了找工作的旅程.意向工作是WPF开发或者ASP.NET 作为后端的WEB开发. 陆陆续续一直在面试,其中有一家公 ...

  6. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

    这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...

  7. xml基础学习笔记01

    注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象.element应称作元素,毕竟这更符合英文的本意.至于标 ...

  8. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...

  9. FPGA-VHDL课堂学习笔记*01

    FPGA-VHDL课堂学习笔记 记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843 03月05日  理论课 ...

  10. [Golang学习笔记] 01 工作区和GOPATH

    Go语言3个环境变量: GOROOT:GO语言按照根路径,也就是GO语言的安装路径. GOPATH:若干工作区目录的路径.是我自己定义的工作空间. GOBIN:GO程序生成的可执行文件(executa ...

随机推荐

  1. HMTL5滑动块研究

    滑动块图片 html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  2. poj3216 Prime Path(BFS)

    题目传送门  Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...

  3. Linux 环境下安装rlwrap工具

    rlwrap项目是一个“readline包装器”,它使用GNU readline库来编辑任何其他命令的键 盘输入.通过rlwrap可以进行命令的上下切换,类似历史命令. 1.下载rlwrap rpm ...

  4. android ListView列表显示数据

    item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  5. maven更换下载镜像源-解决下载慢问题(转)

    转自:http://www.cnblogs.com/duking1991/p/6110192.html maven更换下载镜像源-解决下载慢问题   Maven是当前流行的项目管理工具,但官方的库在国 ...

  6. java switch语句注意事项

    /* switch语句的使用注意事项: 1.多个case后面的数据不可以重复 2.switch后面的小括号当中只能是下列数据类型: 基本数据类型:byte . short.char.int 引用数据类 ...

  7. 创建者模式-Builder

    创建者模式使用多个简单的对象一步一步构建成一个复杂的对象.它提供了一种创建对象的最佳方式.一个 Builder 类会一步一步构造最终的对象,该 Builder 类是独立于其他对象的. 一.类图 创建者 ...

  8. git小乌龟图标不显示 windows系统

    1.修改注册表[windows + R 输入 regedit]进入注册信息,按照步骤找到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curre ...

  9. openwrt 编译支持sqlite3

    编译版本加载lib库 ------------------------------Libraries----------------------------------- Filesystem  -- ...

  10. 【Flutter学习】之 Flutter 的生命周期

    一,概述 Flutter 的生命周期分为两个部分: Widget 的生命周期 App 的生命周期 二,Widget 的生命周期 Flutter 里的 Widget 分为 StatelessWidget ...