参考内容:

    关于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. leetcde-27-移除元素

    问题: package com.example.demo; public class Test27 { /** * 定义一个尾指针,该位置放置和val不同的元素, * 遍历数组,将不同的元素全部放置到 ...

  2. ArcGIS 面要素缝隙孔洞检查代码 C# GP

    public class PolygonGapChecker : CheckProgressMessageSender, IChecker, ICheckProgressChangeEvent { p ...

  3. db2备份与恢复

    备份数据库: 离线备份 1.连接至数据库: db2 connect to test user db2admin using db2admin 2.显示数据库应用状态 db2 list applicat ...

  4. Docker基础(上)

    Docker基础(上) 链接:https://pan.baidu.com/s/1KQjKml2OZAReYwOvpWD9XQ 提取码:6vo8 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  5. webshell yar

    webshell D盾 http://www.d99net.net/

  6. python请求基本库使用

    高级用法 http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#url 3.2 requests 源码 def request ...

  7. 备份Oracle 数据库。

    #!/bin/bash# 2018-07-07 oracle database back#filename=`date +%Y%m%d`filename=`date +%Y_%m_%d_%H%M`di ...

  8. 【JavaWeb项目】一个众筹网站的开发(二)架构搭建之架构测试

    1.dao层和pojo都是使用mbg生成,基本的CRUD以及JavaBean 2.将mbg放在dao层,一旦dao层打包以后mbg就删除掉 一.创建数据库用于测试 数据库名称:scw_0325 SQL ...

  9. PHP FILTER_SANITIZE_STRING 过滤器

    定义和用法 FILTER_SANITIZE_STRING 过滤器去除或编码不需要的字符. 该过滤器删除那些对应用程序有潜在危害的数据.它用于去除标签以及删除或编码不需要的字符. Name: " ...

  10. NOIWC2019 懵逼记

    弱省蒟蒻,第一次也是最后一次来冬令营.. Day [-inf,-1] \(woc\)咋啥都听不懂,没错在下划水王. Day 0 白天上课继续划水..晚上跑去试机,骗了半天交互的分就滚了..半夜里竟然睡 ...