当前位置: 首页 > news >正文

HTTP协议初步认识

1.基本概念:

  HTML:HyperText Transfer Protocol,中文名:超文本传输协议,基于请求/响应模式,基于TCP/IP协议,是一种,无连接,无状态协议;

2.HTTP传输过程:

  

     picture referer : https://www.cnblogs.com/Yang-Sen/p/9076804.html

3.HTTP协议内容:

  HTTP协议包含请求协议和响应协议两部分:

  • 请求协议:

请求行以一个方法GET或POST开头,以空格分开,后面跟着请求的URI和协议的版本。详细解释如下
GET /www.baidu.com/picture/index.html HTTP/1.1
Host: www.cnblogs.com            //请求主机:www.cnblog.com
Connection: keep-alive           //连接类型:保持连接状态
Cache-Control: max-age=0         //缓存控制:最大缓存量=0,即不缓存
Upgrade-Insecure-Requests: 1     //更新请求安全等级:是,以后发请求的时候不用http而用https
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36  //客户端信息
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8      //支持的文件类型
Accept-Encoding: gzip, deflate                                                                     //支持压缩文件类型
Accept-Language: zh-CN,zh;q=0.9                                                                    //支持的语言


请求行:第一行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.
GET说明请求类型为GET
www.baidu.com/picture/index.html 为要访问的资源 该行的最后一部分说明使用的是HTTP1.1版本 
请求头:第二行开始,紧接着请求行(即第一行)之后,用来说明服务器要使用的附加信息 HOST将指出请求的目的地. User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型
检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

空行:请求头部后面的空行是必须的 即使第四部分的请求数据为空,也必须有空行

请求体:可以添加任意的其他数据。 这个例子的请求数据为空。只有POST方法才有请求体,可以用浏览器登录一个网站,输错账号密码来抓取POST请求 POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley

 

 

  •   响应协议:

  

       下面是一条具体的响应:

       

4.常用响应头状态码

  在http响应协议中,我们通过HttpWatch抓包抓取到响应信息。其中响应首行中就包含一个状态码。状态码由三位数字组成,表示请求是否被理解或者被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体分类,第一个数字有五种可能的取值,具体介绍如下所示:

  • 1xx :表示请求已接收,需要继续处理。
  • 2xx :表示请求已经成功被服务器接收、理解、并接受
  • 3xx :为完成请求,客户端需要进一步细化请求
  • 4xx :客户端的请求有错误
  • 5xx :服务器端出现错误

状态码

几条常见的状态码说明

200

请求成功,浏览器会把响应回来的信息显示在浏览器端。

404

表示客户端出错,比如说在浏览器端请求一个不存在的资源,这时浏览器端会出现404状态码。

405

客户端错误的一种,表示当前的请求方式不支持。比如说服务器端只对GET请求做了处理,而客户端的请求是post方式的,这个时候会出现405状态码。

500

服务器端错误,比如说服务器端代码出现空指针等异常,浏览器就会收到服务器发送的500状态码。

302

表示重定向。比如说浏览器访问一个资源,服务器响应给浏览器一个302的状态码,并且通过响应头Location发送了一个新的url,告诉浏览器去请求这个url。这就是重定向。

304

第一访问一个资源后,浏览器会将该资源缓存到本地,第二次再访问该资源时,如果该资源没有发生改变,那么服务器响应给浏览器304状态码,告诉浏览器使用本地缓存的资源。

              

5.常见请求方法

 

方法(操作)意义
OPTIOON请求一些选项的信息,
GET请求指定的页面信息,并返回实体主体。
HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST

 

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT在指明的URL下存储一个文档
DELETE删除指明的URL所标记的资源
TRACE用来进行环回测试的请求报文,主要用于测试或诊断。
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

转载于:https://www.cnblogs.com/LearnAndGet/p/9379523.html

相关文章:

  • 联想启天M715E安装硬盘保护系统和网络同传
  • 通过全备+binlog_server同步恢复被drop的库或表
  • 围观测评题(1)
  • t-sql对被除数为0除数小于被除数结果为0除法保留2位小数的处理
  • 自动化运维之Ansible服务部署
  • 并发下线程池的最佳数量计算
  • SpringMVC+MYBatis企业应用实战笔记
  • HTML5本地存储使用详解
  • 95后博士入职达摩院,14岁上大学,成阿里史上最年轻科学家
  • [Node.js]连接mongodb
  • 数据分析——四种大数据分析方法
  • Maven POM详解
  • 技术指导实践指南
  • @EnableAsync和@Async开始异步任务支持
  • Jenkins+Kubernetes CI/CD
  • #Java异常处理
  • 2017届校招提前批面试回顾
  • Create React App 使用
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java8-模拟hadoop
  • JavaScript学习总结——原型
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jquery ajax学习笔记
  • js递归,无限分级树形折叠菜单
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Phpstorm怎样批量删除空行?
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Terraform入门 - 3. 变更基础设施
  • 大整数乘法-表格法
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 面试总结JavaScript篇
  • 实现菜单下拉伸展折叠效果demo
  • 实现简单的正则表达式引擎
  • 阿里云ACE认证学习知识点梳理
  • #pragam once 和 #ifndef 预编译头
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $jQuery 重写Alert样式方法
  • (1)常见O(n^2)排序算法解析
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (三)elasticsearch 源码之启动流程分析
  • (一)基于IDEA的JAVA基础1
  • .net framework4与其client profile版本的区别
  • .NET Micro Framework初体验
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net 垃圾回收机制原理(二)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net下简单快捷的数值高低位切换
  • .NET中 MVC 工厂模式浅析
  • /boot 内存空间不够
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [Foreman]解决Unable to find internal system admin account
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间