HTTP协议

简介: HTTP协议

HTTP属于是应用层最广泛使用的协议之一!

浏览器获取到网页就是基于HTTTP协议

HTTP就是浏览器和服务器之间的桥梁

HTTP(1.1)目前最常见的(课堂使用)

HTTP往往是基于传输层的TCP协议实现的!!

在浏览器中输入网址/URL

sogou.com——》网址/URL

浏览器会根据这个URL,构造出一个HTTP请求,发送给服务器,服务器就会返回一个HTTP响应(包含HTML,JS,CSS,图片……),浏览器把得到的HTML等数据进行显示出来(渲染)

其实http协议的交互详细过程,可以借助第三方工具来看到的:称为“抓包工具”,如:fidder

打开fidder,立即显示出当前电脑上某个程序使用http和服务器交互的过程!

fidder本质上是一个代理程序,使用的时候,有两个注意事项:

  1. fidder可能和别的代理程序起冲突

使用的时候,要关闭其他的代理程序(包括一些浏览器插件)(所谓的代理是指:找个人给你干活)

代理分为两种:

正向代理:代表客户端的代理

反向代理:代表服务器的代理

  1. 要想正确的抓包,核对开户HTTPS功能
https是基于http搞出来的进化版协议,当下互联网绝大部分的服务器都是https的!!fidder默认情况下不能抓https的包,需要咱们手动启用一下https,并且按照证书(至于怎么安装证书,请移步它文,在此不做过多的讲述)

了解HTTP关键信息的含义:学习一个协议,就是学习它的报文格式!

GET https://www.sogou.com/ HTTP/1.1

首行:包含三个部分,之间使用空格来区分!

  1. GET:HTTP的方法(methond)
  2. https://sogou.com/(URL/网址)URL是唯一资源定位符,标识整个互联网上的唯一的资源的位置(定位符:资源在哪儿??在哪个服务器的哪个目录下的哪个文件??
  3. HTTP/1.1:版本号

认识URL:

URL 最关键的四个部分

  1. 域名/IP
  2. 端口号
  3. 带层次的路径
  4. 查询字符串

其实一个URL的几个部分,有些是可以省略的(默认)

如:https://www.sogou.com/

  1. 省略了端口——》浏览器会通过一个默认端口,对于http默认端口是80,对于https默认端口是443
  2. /也是路径,没省略,只是有点短——》‘/’代表根目录(HTTP服务器的根目录)

一个HTTP服务器提供的资源是很多的,不同的路径,拿到的是不同的资源

https://www.sogou.com

https://www.sogou.com/index.html

HTTP协议:应用层协议,用来浏览器和Web服务器之间的交互!

方法 说明
GET 获取资源
POST 传输实体主类
PUT 传输文件
HEAD 获得报文首部
DELETE 删除文件
OPTIONS 询问支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理
LINK 建立和资源之间的联系
UNLNE 断开连接关系

其实在实际开发中,这里的方法,大部分是用不到的,最常见的就两个:GET,POST

天下的HTTP方法是十斗,GET独占八斗,POST占一斗,剩下的方法共分一斗!

GET请求:

  1. 在浏览器地址栏里直接输入URL
  2. html里的link , script , img……标签
  3. 通过js来构造get……

POST请求:

  1. 最典型的就是登录,登录的时候会涉及到POST
  2. 上传文件/图片

HTTP请求可以认为是分成四个部分!!

  1. 首行
  2. 请求头(header)
  3. 空行
  4. 正文(body)

如果是GET请求,没有body

如果是POST请求,一般有body

在抓包的结果中可以看到post的body是程序员自定义的内容!

uid——》唯一身份标识!

可以通过一定的算法,构造出一个长的字符串,每次构造的长字符串都是通用的!

GET和POST之间的区别??(其实没有本质区别,在大部分场景下,彼此之间能相互替代,主要还是使用习惯的差异!)(经典面试题)

  1. GET也可以给服务器传递一些信息

GET传递的信息一般都是放在query string

POST传递的信息,则是通过body

  1. 语义上的差别(习惯用法)

GET请求一般是用于从服务器获取数据

POST一般是用于给服务器提交数据

  1. 幂等:相同的输入,得到的结果也是确定的

GET通常会被设计成幂等的

POST不要求幂等

  1. 缓存:把请求的结果保存下来了,下次就不必请求了,直接取缓存的结果即可!(前提:幂等!!结果确定且唯一)

GET可以被缓存的

POST则一般不能被缓存

  1. 网络上的有些说法,有待商讨…………
  2. GET请求传输的数据存在上限

如:上限的版本:1KB,2KB,1024KB等,实际上rfc标准文档中,对于HTTP GET请求的长度上限明确说明:没有规定!

只不能有些上古时期的浏览器/服务器,实现的时候搞了上限!

  1. POST比GET更安全

依据就是:如果使用GET请求进行登录,此时用户名,密码可以通过query string来传递,就会出现在地址栏中,很容易被别人看到!

安全:指的是:如果黑客获取到你的数据,你的敏感信息不会泄露,安全核心要素是:加密

认识header(请求报头)——》一堆键值对!

每一行是一个键值对,键和值之间使用的是:(冒号分割),这些键值对都是HTTP事先定义好的,有特定的含义的!!

HOST    Host:edu.bitejiuyeke.com

大概描述了服务器所在的地址和端口

HOST这里的地址和端口,用来描述你最终要访问的目标

edu.bitejiuyeke.com这个内容大概率和URL中是一样的,也有一定的情况下是不同的!

Content-length  表示body中的数据长度(字节)

Content-type  表示请求的body中的数据格式

如果是GET请求,则没body,请求中没有这俩字段

如果是POST请求,则有body,请求中必须有这俩字段

User-Agent(简称UA):描述了浏览器和操作系统的版本!

现在User-Agent主要用来区分PC端和移动端

Referer:表示当前页面的“来源”(哪个页面跳转的?)

如果直接通过地址栏输入地址,或者直接点击收藏夹……都没有Referer

Cookie:非常重要的header属性

本质是浏览器给网页提供的本地存储数据的机制

网页,默认是不允许访问你计算机硬盘的(保证安全),cookie相当于浏览器对于访问硬盘做出了明确的限制!cookie就是通过键值对的方式来组织数据的!

注意:cookie中具体存啥内容,也就是程序员自定义的部分!则数据的具体含义,只能开发整个程序员才能知道!

关于cookie的各种疑问??

  1. Cookie从哪里来??

cookie在的数据来自于服务器,服务器会通过HTTP响应的报头部分(Set—Cookie字段)

服务器来决定浏览器的Cookie要存什么??

  1. Cookie是在哪里存的??

可以认为是存在与浏览器中,存在于硬盘的!!

Cookie存的时候,是按照浏览器+域名维度来进行分组的,不同浏览器各自存各自的cookie,同一个浏览器的不同域名对应不同的cookie

  1. Cookie要到哪里去??

回到服务器里

因此Cookie就是浏览器持久化存储数据的一种机制!!


请求正文:body

  1. spplication/x—www—form—urlencoded
抓取“码云上传头像请求”
  1. multipart/form—data
抓取山大教务系统的“上传简历功能”
  1. application/json
抓取“山大教务系统的登录页面”
相关文章
|
11天前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
11天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
46 3
|
22天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
49 13
|
15天前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
20天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
20天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
20天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
22天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
24天前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
24天前
|
安全 前端开发 JavaScript
利用HTTP协议进行文件上传和下载的常见方法
【10月更文挑战第25天】可以利用HTTP协议方便地实现文件的上传和下载功能,满足不同应用场景下的需求。在实际应用中,还可以根据具体的业务需求和安全要求,对文件上传和下载的过程进行进一步的优化和安全处理。
下一篇
无影云桌面