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
抓取“山大教务系统的登录页面”
相关文章
|
10月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
12月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
998 0
|
12月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
1004 0
|
12月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
860 0
|
12月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
911 2
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
1142 0
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
819 0
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
832 1
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
1032 0

热门文章

最新文章