一、前言

只要你做web开发,不管是前端还是后台,http协议都是必须掌握的。网上的长篇大论已经够多了,我们今天就用十分钟的时间,用最简洁的语言让您从不懂http协议到掌握http协议。

二、什么是协议

协议说白了就是双方都认同的一个规定。比如A和B确定了一个协议:“A给B一个耳光,B就得给A一百块钱”。虽然这个协议有点扯,但是A和B都认同了,那就得执行,只要B活着,A就可以随便抽他,并且获取那一百块。

http就是一个协议,这个协议是客户端和服务器端认同的。客户端要东西(请求),服务器端就得给(响应)。

三、请求和响应

客户端希望向服务器端要东西,需要发送一个请求,服务器接到了这个请求,就会响应对应的内容。

举个例子:比如我们访问百度首页,首先打开浏览器(浏览器就是客户端),然后输入地址,然后按回车,当我们按回车的时候,其实就是向百度的服务器发送了一个请求,服务器接到这个请求,就会给予一个响应,响应的内容就是百度首页的html代码,然后浏览器将html代码转换成页面,用户就可以看到百度的首页了。

浏览器发送请求的方式有哪些呢:

  1. 直接在地址栏输入地址,然后按回车。

  2. 点击a标签,跳转页面。

  3. 提交表单

  4. JavaScript实现页面跳转

  5. XMLHttpRequest

  6. img标签或script标签的src属性可以请求资源。

只要服务器接到上面6条的任意一条请求,都会做出响应,返回对应的内容。可能是一个网页,一个json数据,一张图片。

(顺便说一下,上面第5条是ajax的基础,第6条是jsonp的基础。)

四、请求的方法

上面介绍了六种发送请求的方式,其实发送请求还有两个常用方法:get和post,两个方法的区别网上一搜一大把,这里就不重复了,在这里大家只要知道,get请求和post请求都是请求,都能得到响应就行了,结合上面的内容,再来归纳一下:

  1. 直接在地址栏输入地址,然后按回车--只能是get请求

  2. 点击a标签,跳转页面--只能是get请求

  3. 提交表单--可以通过表单的method属性设置get或post请求

  4. JavaScript实现页面跳转--只能是get请求

  5. XMLHttpRequest--可以是get或post

  6. img标签或script标签的src属性可以请求资源--只能是get请求

五、总结

初学http协议,就把他总结成一句话:客户端发送请求,服务器响应数据。理解这句话,http协议就算入门了。

这些知识点都比较抽象,如果希望切身的体会请求和响应的过程,最简单的方法就是用chrome的抓包工具看看请求和响应的内容。

ajax可以说是http的实现,用代码模拟一下请求和响应的过程,更有助于理解http协议。

六、尾声

每天十分钟,进步一点点,感谢您的预览,如果喜欢,可以关注【晓舟报告】,获取更多微技术。

原文链接

不得不学的http协议相关推荐

  1. 通过telnet来实践HTTP协议。

    这是一篇实践教程,能够让你更加深刻的理解HTTP协议,因此需要一定的HTTP基础. 协议:一种规定,规定了你应该怎么去做,如w3c规定了浏览器应该怎么去解析HTML,CSS,JS.而HTTP则规定了客 ...

  2. 公司的“奋斗者协议”签不签?网友吐槽:你敢让我签我就敢辞

    今天网上曝出了一篇帖子 一个互联网公司为了让员工加班居然搞出个名曰"奋斗者协议"的幺蛾子 协议内容: 1,申请成为公司的奋斗者,自愿放弃带薪年休假,自愿 进行非指令性加班: 2,营 ...

  3. 蓝牙协议分析(5)_BLE广播通信相关的技术分析

    蓝牙协议分析(5)_BLE广播通信相关的技术分析 作者:wowo 发布于:2016-5-27 16:15 分类:蓝牙 1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广 ...

  4. 可以不学c语言直接学python_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  5. FFmpeg入门详解之87:HLS直播协议详解

    引言与效果演示 ----------------------------------------- FFmpeg431的官方地址已经无法打开, 我将ffmepg4.3.1的开发包和源码上传到了百度云: ...

  6. FFmpeg入门详解之102:HLS直播协议详解

    引言与效果演示 ----------------------------------------- FFmpeg431的官方地址已经无法打开, 我将ffmepg4.3.1的开发包和源码上传到了百度云: ...

  7. TCP/IP协议族(第四版)已出,不愧是世界计算机优秀畅销精选书籍

    序言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  8. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  9. Redis 笔记(11)— 文本协议 RESP(单行、多行字符串、整数、错误、数组、空值、空串格式、telnet 登录 redis)

    RESP 是 Redis 序列化协议Redis Serialization Protocol 的简写.它是一种直观的文本协议,优势在于实现异常简单,解析性能极好. ​ Redis 协议将传输的结构数据 ...

最新文章

  1. 360金融发布Q2财报:净利6.92亿,同比增长114%,大数据与AI加持的科技服务是新亮点?
  2. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)
  3. 006_Radio单选框
  4. Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))
  5. 四十、Java中字节流和字符流介绍和区别
  6. 单招计算机考试知识点,单招考试数学必背知识点(11页)-原创力文档
  7. oracle查询字段精度,【Oracle】查询字段的长度、类型、精度、注释等信息
  8. 锐龙版和linux有什么区别,华为MateBook D 14锐龙版Linux版价格为何这么便宜
  9. 语音识别准确率永远达不到100%?
  10. 变分模态分解(VMD)原理-附代码
  11. 第一个成功复制小米粉丝营销的屌丝案例
  12. gmap 支持python吗_在gmap中使用bokeh的python为for circle添加工具提示
  13. XCEL查找SQL SERVER数据库的数据
  14. 两人分组问题:显示In function 'int main()'求大佬解惑
  15. 联发科10月营收238亿新台币 近6个月低点
  16. java word 水印_Java 添加Word文本水印、图片水印
  17. 简易单片机人体感应灯光控制器设计
  18. java dscape_包含Java脚本的Python漂亮的Soup scape页面
  19. python分组后对日期排序_python对分组进行排序
  20. 宾夕法尼亚大学计算机硕士录取在线读学位,恭喜L同学获得宾夕法尼亚大学电子工程专业硕士Offer...

热门文章

  1. [SDOI2017]遗忘的集合
  2. Android与IOS异同点对照(1)------ 显示
  3. Hadoop日志分析工具——White Elephant
  4. css li 空隙问题
  5. [C++] - 面向对象-图书管理系统
  6. ★★★【庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术系列—(1)读者序】★★★...
  7. CVS配置过程 (部分转)
  8. java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy 错误解决办法
  9. Java按行分割文件
  10. 微信小程序 自定义tabBar