详细介绍:HTTP协议
目录
一.什么叫“协议”?
协议就是让两个计算机之间为了能够流畅地进行沟通而设置的一个君子协定。
常见的协议有:TCP/IP协议、SOAP协议、HTTP协议......
二.什么是HTTP协议?
1.HTTP协议详解(大白话)
HTTP协议,全称是Hyper Text Transfer Protocol(超文本传输协议)。
超文本传输协议:说白了就是,一套专门用来在网络上‘搬运’和‘传递’网页(超文本)的规则
说白了,浏览器和服务器之间进行数据交互时,需要遵守的就是HTTP协议。
①举例
①你想打开淘宝首页,于是你在浏览器(客户端)输入
www.taobao.com并回车。②你的浏览器就按照 HTTP协议 的规则,写了一份“请求”(Request),说:“淘宝服务器你好,请把你们的主页(那个超文本文件)发给我。”
③淘宝的服务器收到请求,也按照 HTTP协议 的规则,把主页的代码(HTML,这就是超文本)和图片等打包成一个“响应”(Response),发回给你的浏览器。
④你的浏览器收到后,还是按照规则把代码“翻译”成你看到的那个丰富多彩、可以点击的淘宝网页。
②思考
问题1:淘宝首页不是前端写的吗?为什么还要后端返回html?
答案:
因为淘宝首页不是一张死气沉沉的海报,而是一个充满动态信息的、为你量身定做的“仪表盘”。
后端返回的HTML里,包含了大量动态的、个性化的信息:
“猜你喜欢”:根据你的浏览和购买记录实时计算出来的。
“欢迎回来,XXX”:这里要填上你的用户名。
购物车数量:那个角标上的数字,是实时从你的账户里查出来的。
实时活动/通知:比如双11的倒计时、新发的优惠券。
地理位置信息:自动显示你所在城市的商品。
如果这个HTML页面是前端写死的,那所有人看到的淘宝首页都将一模一样,没有任何个性化推荐,你也无法登录,购物车永远是0——那这个电商网站就毫无意义了。
问题2:使用vue获取实时数据不就行了,为什么非得后端返回html?
答案:问题1的答案,所提到的是传统的html项目,而没有用到vue。当用vue写前端后,就可以用vue获取实时数据了。此时的方案如下:
问题3:但我看我一打开自己的项目,还没访问后端呢,页面就出来了。因为我该页面根本没通过axios向后端发送请求,这种情况下,服务器返回了空白html了吗?
答案:
问题4:“服务器”和“Java后端服务”,这两个定义如何区别?
答案:
①服务器:指的是java项目上线后,应当把前端代码、后端代码都放到一台linux上,这台linux就叫“服务器”
②Java后端:在开发过程中,前端访问后端才会获取数据,也就是后端给前端提供服务,所以习惯称之为“服务器”,但是这个概念和上面的那个截然不同。所以此时应当把Java后端叫做“服务”, 而不是叫服务器。
2.请求头、响应头,都包含哪几块内容?
HTTP协议把一条消息分成三大块内容(无论是请求还是响应,都是三块内容)
①请求
请求行 -> 请求方式(get/post) 请求url地址 协议
请求头 -> 放一些服务器要使用的附加信息
请求体 -> 一般放一些请求参数
举例:用户发送登录请求时,提交用户名和密码。
POST /login HTTP/1.1 // 【请求行】POST是请求方法,/login是请求的URL路径,HTTP/1.1是协议版本 Host: www.example.com // 【请求头】目标服务器的主机名 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36... // 【请求头】客户端(浏览器)的标识信息 Content-Type: application/x-www-form-urlencoded // 【请求头】请求体的内容编码格式(表单格式) Content-Length: 29 // 【请求头】请求体的长度(字节) Connection: keep-alive // 【请求头】指示服务器保持连接 Accept-Language: zh-CN,zh;q=0.9 // 【请求头】客户端接受的语言 // 【空行】分隔请求头和请求体(这是必须的) username=alice&password=123456 // 【请求体】具体的请求参数(这里是表单数据)
②响应
状态行 -> 协议 状态码
响应头 -> 放一些客户端要使用的一些附加信息
响应体 -> 服务器返回的客户端要用到的内容(html、json等)
举例:服务器收到登录请求后,响应的内容
HTTP/1.1 200 OK // 【状态行】HTTP/1.1是协议版本,200是状态码,OK是状态消息 Content-Type: application/json; charset=utf-8 // 【响应头】响应体的内容类型是JSON,字符集是UTF-8 Content-Length: 45 // 【响应头】响应体的长度 Connection: keep-alive // 【响应头】同意客户端保持连接 Server: nginx/1.18.0 // 【响应头】服务器的软件信息 Set-Cookie: sessionId=abc123; Path=/ // 【响应头】指示客户端设置Cookie Date: Fri, 25 Oct 2024 08:00:00 GMT // 【响应头】响应生成的时间 // 【空行】分隔响应头和响应体(这是必须的) {"status": "success", "message": "登录成功"} // 【响应体】服务器返回的实际数据(这里是JSON格式)
三.注意
1.写爬虫要格外注意请求头、响应头
在后面我们写爬虫的时候要格外注意请求头和响应头,这两个地方一般都隐含着一些比较重要的内容。
2.请求头中常见的一些重要内容

3.响应头中常见的一些重要内容

4.请求方式
①GET:显式提交(即:GET请求的所有参数都直接、清晰地展示在URL(地址栏)中)
②POST:隐式提交(即:POST请求的参数不会显示在URL中,而是被放在HTTP请求的“正文”(请求体)中)
以上就是HTTP协议的详细介绍,希望可以帮助你学习爬虫。
喜欢本篇文章的话可以留个免费的关注呦~~~


浙公网安备 33010602011771号