首页 > 其他分享 >HTTP协议详解:发展、请求方法与安全

HTTP协议详解:发展、请求方法与安全

时间:2024-11-15 12:45:23浏览次数:3  
标签:HTTP 请求 GET 详解 服务器 资源 客户端

前言

第一次写文章比较生疏,思路也很局限,除了课件之外添加内容有限,但也以此督促学习,争取日更。

学习视频来自B站up主 “泷羽sec”有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)

目录

HTTP简介

http发展过程

一.HTTP/0.9

二.HTTP/1.0

三.HTTP/1.1

四.HTTP/2

五、HTTP/3

HTTP 协议主要的几种请求方法

一.GET

二.POST

三.PUT

四.DELETE

五.HEAD

六.OPTIONS

七.TRACE

HTTP协议之url含义

HTTP 常见的状态码分类介绍

一、1xx 信息性状态码

二、2xx 成功状态码

三、3xx 重定向状态码

四、4xx 客户端错误状态码

五、5xx 服务器错误状态码

HTTP头部信息的安全

Host头

Referer头

User-Agent头

Cookie安全

Session Fixation

CSRF攻击

Cookie Flags


HTTP简介

HTTP协议是Hypertext Transfer Protocol(也称为超文本传输协议)的缩写,是用于从万维网(www:world wide web)服务器传输超文本到本地浏览器的传送协议

http协议工作在浏览器端-服务端(brower-server)B/S架构

浏览器作为http客户端通过url向http服务端即web服务器发送所有请求。web服务器根据接收到的请求后,向客户端发送响应信息

http发展过程

HTTP/0.9

诞生背景:

互联网发展初期,对网页的需求较为简单,主要是纯文本内容的传输。

主要特性:

仅支持 GET 请求,用于获取 HTML 文档。通信极为简洁。没有请求头和响应头,只能传输纯文本内容,不支持多媒体资源。

使用场景:

早期简单的网页浏览,通常是一些静态的文本

HTTP/1.0

诞生背景:

随着互联网的发展,人们对网页的内容和交互性有了更高的要求。

主要特性:

引入了请求头和响应头,包含了一些基本的元信息,如文档类型、日期等。

支持多种请求方法,如 GET、POST 和 HEAD。

但每次请求都需要建立新的 TCP 连接,传输完成后立即断开,效率较低。

使用场景:

适用于一些简单的网页浏览和交互场景,但对于包含大量资源的网页,加载速度较慢。

HTTP/1.1

诞生背景:

为了解决 HTTP/1.0 连接频繁建立和断开的问题,提高网页加载速度和性能

主要特性:

持久连接(Keep-Alive),允许在一个 TCP 连接上发送多个请求和响应,减少连接建立的开销。

管道化(Pipelining),客户端可以在一个连接上连续发送多个请求,但服务器的响应顺序必须与请求顺序一致。

增加了更多的请求方法如 PUT、DELETE、OPTIONS 等

引入缓存控制机制,通过头部字段控制缓存的使用。

使用场景:

目前广泛应用于大多数网站和 web 应用程序,是较为成熟和稳定的版本。

HTTP/2

诞生背景:

随着Web应用的日益复杂,用户对网页加载速度和性能的要求越来越高,HTTP/1.1在一些方面存在局限性。

主要特性:

二进制分帧,将http消息分解为更小的帧进行传输,提高传输效率和灵活性。

多路复用可在一个连接上同时处理多个请求和响应,无需按顺序发送,提高并发处理能力。

头部压缩,使用HP ACK算法对头部进行压缩,减少传输的数据量。

服务器推送,服务器可以主动向客户端推送资源,提高页面加载速度

使用场景:

对于性能要求较高的现代 Web 应用,特别是需要快速加载大量资源的场景。

HTTP/3

诞生背景:

虽然 HTTP/2 在性能上有了很大提升,但它仍然基于 TCP 协议,而 TCP 在一些情况下可能会出现连接建立时间长、丢包重传效率低等问题。

主要特性:

基于QUlC 协议,一种基于 UDP 的传输协议,具有更快的连接建立时间和更好的其于拥塞控制机制。

0-RTT 连接建立,在某些情况下可以在第一次连接时就开始发送数据,减少延迟

连接迁移,即使网络环境发生变化,连接也可以保持。

前向纠错,在数据传输过程中可以检测和纠正一些错误,减少重传次数,提高传输效率

使用场景:

对延迟敏感的应用,如在线游戏、实时视频通信等,以及在网络环境不稳定的情况下,能够提供更好的性能和可靠性。

HTTP 协议主要的几种请求方法

GET

用途:

        用于请求指定的资源。这是最常见的请求方法,当你在浏览器中输入网址并访问时.通常会发送 GET 请求。

特点:

        GET 请求可以被缓存,除非指定了特定的缓存控制头部。

        GET 请求的参数通常附加在 URL 中,这使得它们可以被轻松地分享和书签,但也可能会暴露敏感信息,,并且有长度限制。

        GET 请求是安全的,即它不会对服务器上的资源进行修改。

POST

用途:通常用于向服务器提交数据,以创建或更新资源。例如,在提交表单、上传文件等场景中经常使用。

特点:POST 请求的数据通常放在请求体中,而不是 URL 中,因此可以传输更大量的数据,并且相对更安全:不容易暴露敏感信息。

POST 请求一般不会被缓存。

PUT

用途:用于更新服务器上的资源,PUT 请求通常会将整个资源进行替换

特点:PUT 请求是幂等的,即多次发送相同的 PUT 请求应该产生相同的结果

四.DELETE

用途:用于删除服务器上的指定资源

特点:DELETE 请求也是幂等的,多次删除同一个资源应该产生相同的结果,即资源被删除后再次删除不会产生错误。

五.HEAD

用途:与 GET 请求类似,但只返回头部信息,不返回资源的主体内容。

特点:可以用于检查资源的存在性、获取资源的元信息(如最后修改时间、内容长度等)而无需下载整个资源,从而节省带宽和时间。

六.OPTIONS

用途:用于获取服务器支持的 HTTP 请求方法和其他选项

特点:客户端可以通过 OPTIONS 请求了解服务器对特定资源的访问权限和支持的操作

七.TRACE

用途:用于诊断和调试,客户端可以发送 TRACE 请求来查看请求在网络中经过的路径

特点:通常在开发和测试环境中使用,以了解请求的处理过程。

这些请求方法为客户端与服务器之间的交互提供了丰富的方式,使得 web 应用能够实现各种不同的功能。

HTTP协议之url含义

https://www.baidu.com/web/579.html?replytocom=22#respond

协议://域名:端口/虚拟目录/文件名?参数#锚点

HTTP 常见的状态码分类介绍

1xx 信息性状态码

100 Continue

表示目前为止一切正常客户端可以继续发送请求或者忽略这个响应。一般在客当请求体较大,服务器可能先返回这个状态码,表示可以继续发送请求体

2xx 成功状态码

200 OK:

最常见的成功状态码,表示请求已成功,服务器已成功返回请求的数据。

201 Created:

表示请求已成功,并在服务器上创建了新的资源。通常在 POST 请求用于创建资源时返回。

204 No Content:

表示请求已成功处理,但没有返回任何内容。通常用于 PUT或 DELETE 请求成功后,表示资源已被更新或删除。

3xx 重定向状态码

301 Moved Permanently:

表示请求的资源已被永久移动到新的 URL,客户端应使用新的 URL 进行后续请求

302 Found:

表示请求的资源临时被移动到了另一个 URL,客户端应继续使用原有 URL 进行请但可以根据响应中的 Location 头部字段进行重定向。

304 Not Modified:

表示资源未被修改,客户端可以使用缓存的版本。通常在客户端发送条件请求(如带有If-Modified-Sinceo或If-None-Match 头部)时返回

4xx 客户端错误状态码

400 Bad Request:

表示客户端发送的请求有语法错误或无法被服务器理解。

401Unauthorized:

表示请求需要用户认证,通常是因为客户端没有提供有效的身份验证凭证。

403 Forbidden:

表示服务器理解请求,但拒绝执行,通常是因为客户端没有足够的权限访问资源。

404 Not Found:

表示服务器无法找到请求的资源。

405 Method Not Allowed:

表示请求的方法不被允许,例如使用了不支持的 HTTP 方法请求某个资源。

5xx 服务器错误状态码

500 lnternal Server Error:

表示服务器在处理请求时发生了内部错误,通常是服务器端的程序出现了异常

502Bad Gateway:

表示作为网关或代理的服务器在尝试执行请求时,从上游服务器接收到无效的响

503 Service Unavailable:

表示服务器暂时无法处理请求,通常是由于服务器过载或正在进行维护。

504 Gateway imeout:

表示作为网关或代理的服务器在等待上游服务器响应时超时

HTTP头部信息的安全

Host头

X-Forwarded-For头
用途:用于记录客户端的真实IP地址。
安全性:攻击者可以伪造X-Forwarded-For头来绕过IP限制,进行IP欺骗或绕过WAF。需要注意Web应用是否正确验证和过滤该头部。

Referer头

用途:表示请求来源的URL。
安全性:Referer头可能泄露用户的敏感信息或网站内部结构,攻击者可以通过篡改该头来进行CSRF攻击或信息泄露。

User-Agent头

用途:标识客户端应用的类型。
安全性:攻击者可能伪造User-Agent头绕过Web应用的安全检测,如反爬虫或Web应用防火墙(WAF)策略。

Cookie安全

Session Fixation

描述:如果Web应用没有正确管理会话ID,攻击者可以通过预设会话ID来控制用户的会话,进行会话固定攻击。
防护:确保每次用户登录时会话ID都会更新。

CSRF攻击

描述:通过伪造请求,攻击者强迫用户在不知情的情况下执行操作。
防护:Web应用应使用Anti-CSRF Token机制,并为cookie设置SameSite属性。

Cookie Flags

描述:未设置HttpOnly或Secure标志的cookie可能被XSS攻击窃取,或者在不安全的连接中传输。
防护:确保Secure和HttpOnly标志设置正确,防止cookie泄漏。

标签:HTTP,请求,GET,详解,服务器,资源,客户端
From: https://blog.csdn.net/2401_87640455/article/details/143755127

相关文章

  • CSS复合选择器详解与应用指南
    CSS复合选择器详解与应用指南CSS复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的,可以更准确、更高效地选择目标元素(标签)。以下是CSS复合选择器所有重要的基础知识点:一、复合选择器的类型1.后代选择器:又称为包含选择器,可以选择父元素里面的子元素。其写法......
  • 【开发】若页面一次性接口请求上百个,阁下又当如何应对
    需求:假如页面一次性请求有上百个,你应该如何处理这种请求并发?答:soeasy!循环请求?肯定是不对的,否则一次性并发上百次请求,差点的服务器得崩溃了,我甚至一度以为你是在搞Dos攻击。我们可以通过任务队列的缓存来合理控制并发数据。我们知道浏览器发起的请求最大并发数量一般都是6~8......
  • 深入理解Kubernetes中的持久化存储 - PV和PVC详解
    1.引言在Kubernetes(K8s)生态系统中,持久化存储是一个至关重要的概念,尤其对于有状态应用而言。Kubernetes通过引入PersistentVolume(PV)和PersistentVolumeClaim(PVC)这两个核心概念来管理持久化存储。本文将深入探讨PV和PVC的概念、配置、生命周期以及实际应用场景。2.PV和PVC......
  • Redis 持久化方式详解:RDB 与 AOF 的比较与应用
    Redis作为一个高性能的内存数据库,为了确保在系统断电、重启等不可控情况下不丢失数据,提供了多种持久化方式。Redis持久化的主要目的是将内存中的数据保存到磁盘中,保证即使服务发生故障,数据也可以通过持久化文件恢复。Redis提供了两种主要的持久化机制:RDB(RedisDatabase)和......
  • SpringBoot中监听器、过滤器、拦截器和AOP详解
    SpringBoot中监听器、过滤器、拦截器和AOP详解在构建SpringBoot应用程序时,监听器(Listener)、过滤器(Filter)、拦截器(Interceptor)和面向切面编程(AOP)是四种常用的机制,它们各自有不同的用途和执行时机。本文将详细介绍这四种技术的执行时机和区别,并附上示例代码帮助理解。1.......
  • HTTPS之于小程序:不仅是加密,更是信任的选择
    在移动互联网的蓬勃发展中,小程序以其轻量级、便捷性、即用即走的特点,迅速成为连接用户与服务的重要桥梁。然而,随着小程序市场的日益扩大,其安全性问题也日益凸显,成为制约小程序进一步发展的关键因素。HTTPS协议,作为现代网络通信中的安全标准,对于小程序而言,不仅是数据传输加密的......
  • quilt命令详解
    quilt命令详解 简介quilt是ubuntu系统帮助我们管理patch的一个工具,具体参数及实例如下:Usage:quilt[--trace[=verbose]][--quiltrc=XX]command[-h]...quilt--versionCommandsare:addfoldmailrefreshsnapshotannotateforknewremovetopappliedgraphnextrenam......
  • HTTP 协议学习笔记
    HTTP协议学习笔记带新手走进神秘的HTTP协议-超超boy-博客园HTTP首部字段详细介绍-超超boy-博客园《白帽子讲web安全(第二版)》HTTP默认的端口号为80,HTTPS的端口号为443。HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。可以使用Cookie......
  • 生成本地开发环境中的Https SSL证书和私钥的工具:mkcert
    mkcert 是一个用于生成本地开发环境中的SSL证书和私钥的工具。它可以帮助开发者在不需要购买或配置复杂证书颁发机构(CA)的情况下,快速创建受信任的SSL证书。这对于本地开发和测试Web应用非常有用,因为它可以确保HTTPS连接的安全性。特点简单易用:mkcert 提供了一个简单的命令行......
  • uniapp路由与页面跳转详解:API调用与Navigator组件实战
    UniApp路由与页面跳转详解:API调用与Navigator组件实战路由uniapp页面路由为框架统一管理,开发者需要在page.json里面配置每个路由页面的路径及页面样式。路由跳转uniapp有两种页面路由跳转方式,调用API跳转和navigator组件跳转。调用API跳转navTo(){ /*跳转到非tabbar......