当前位置: 首页 > news >正文

XSS学习1之http回顾

1. HTTP的基本结构与工作流程

HTTP是一个请求-响应协议,基于客户端与服务器之间的交互。每次用户通过浏览器请求某个资源时,HTTP协议都会完成一系列的步骤。

HTTP请求:

HTTP请求由以下几个部分构成:

  • 请求行

    • 请求方法:如GET、POST、PUT、DELETE等,指示客户端希望对服务器上的资源执行什么操作。

    • 请求的URL:如https://www.example.com/index.html,指示客户端请求的资源路径。

    • HTTP版本:如HTTP/1.1,说明客户端和服务器之间使用的协议版本。

  • 请求头:提供关于请求的附加信息,如:

    • User-Agent:浏览器的类型。

    • Accept:客户端能够处理的响应内容类型。

    • Authorization:用于认证的凭证(如果有的话)。

    • Cookie:包含客户端存储的Cookies。

  • 请求体(可选):当客户端发送数据时(如表单提交或上传文件),请求体中包含数据内容。通常出现在POST请求中。

HTTP响应:

HTTP响应由以下几个部分构成:

  • 状态行

    • HTTP版本:响应使用的HTTP版本,如HTTP/1.1

    • 状态码:指示服务器处理请求的结果,分为不同类别,如2xx表示成功,4xx表示客户端错误,5xx表示服务器错误等。

    • 状态描述:一个简短的说明,帮助客户端理解状态码的含义。

  • 响应头:提供关于响应的附加信息,例如:

    • Content-Type:指定响应体的类型(如text/htmlapplication/json)。

    • Content-Length:响应体的长度(字节数)。

    • Set-Cookie:设置新的cookie,客户端可保存并在后续请求中使用。

    • Cache-Control:指示缓存机制的行为。

  • 响应体:实际的资源数据,如HTML页面、图片、JSON数据等。

2. HTTP状态码详解

状态码分为5类:

  • 1xx(信息性状态码):表示请求已经接收,继续处理(例如:100 Continue)。

  • 2xx(成功状态码):表示请求已成功处理(例如:200 OK,201 Created)。

  • 3xx(重定向状态码):表示需要进一步的操作才能完成请求(例如:301 Moved Permanently,302 Found)。

  • 4xx(客户端错误状态码):表示请求错误,客户端可能需要修改请求(例如:404 Not Found,403 Forbidden)。

  • 5xx(服务器错误状态码):表示服务器处理请求时出现了错误(例如:500 Internal Server Error,502 Bad Gateway)。

3. HTTP方法与语义

常见的HTTP方法:
  • GET:请求资源,数据通过URL传输,通常用于查询资源。GET请求应是安全的和幂等的,即它不会修改服务器上的数据。

  • POST:向服务器发送数据,通常用于提交表单或上传文件。POST请求可以产生副作用(例如修改数据库内容)。

  • PUT:更新现有资源,通常通过传送完整的资源信息来替代现有资源。

  • DELETE:删除指定资源。

  • PATCH:对资源进行部分更新。

  • HEAD:与GET类似,但不返回响应体,仅返回响应头。

  • OPTIONS:请求获取服务器支持的HTTP方法,常用于跨域请求中的预检请求。

4. HTTP的连接机制:无状态与持久连接

HTTP协议是“无状态的”,这意味着每次请求都是独立的,服务器不会保存任何关于客户端请求的状态信息。因此,每次请求都必须携带完整的上下文信息(如Cookies)。

1.1 无状态的特点:
  • 服务器处理请求时不会记住任何过去的请求信息。

  • 每次请求都必须包含足够的上下文信息,确保服务器能够理解并正确处理该请求。

1.2 持久连接(HTTP/1.1及以上)

在HTTP/1.0中,每个请求和响应都需要重新建立TCP连接,这样效率较低。HTTP/1.1引入了持久连接(或称为“连接复用”),即在一个TCP连接中可以发送多个请求和响应。持久连接使用Connection: keep-alive头来告知服务器和客户端保持连接,不必每次都建立新的连接。

1.3 管道化(Pipelining)

HTTP/1.1还支持请求管道化,即多个请求可以同时在一个连接上发出,而无需等待每个请求的响应。这在HTTP/1.1中并未广泛使用,因为大多数代理服务器和浏览器并不支持完全的管道化。

5. HTTPS:加密的HTTP协议

HTTP是明文传输协议,数据可以被中间人监听或篡改。因此,HTTP在很多场合并不够安全。为此,HTTPS(HyperText Transfer Protocol Secure)应运而生,它通过SSL/TLS协议对HTTP请求和响应进行加密,提供以下优势:

  • 数据加密:确保传输的数据不会被中途拦截或篡改。

  • 身份认证:通过证书验证服务器身份,防止欺骗网站。

  • 数据完整性:确保数据在传输过程中不会被篡改。

HTTPS协议基于公钥和私钥加密机制,采用三阶段的握手过程来建立安全连接:客户端验证服务器身份、生成会话密钥、使用该密钥加密数据。

6. HTTP/2与HTTP/3的演进

随着Web应用对性能的要求越来越高,HTTP也经历了几次重要的演进,尤其是HTTP/2和HTTP/3。

6.1 HTTP/2

HTTP/2通过采用多路复用(Multiplexing)和流控制技术,显著提高了数据传输的效率:

  • 多路复用:允许多个请求和响应在同一TCP连接中并行传输,消除了HTTP/1.x中队头阻塞的问题。

  • 头部压缩:通过HPACK算法减少头部信息的传输大小,减少网络带宽占用。

  • 服务器推送:允许服务器主动将资源推送给客户端,减少等待时间。

6.2 HTTP/3

HTTP/3基于QUIC(Quick UDP Internet Connections)协议,它是一个基于UDP的传输协议。相比TCP,QUIC有以下优势:

  • 减少连接建立时间:QUIC支持0-RTT连接建立,极大地缩短了延迟。

  • 更好的抗丢包能力:QUIC在数据丢失时不会像TCP那样全局阻塞,从而提高了网络效率,尤其在移动网络上表现突出。

  • 内建加密:QUIC协议本身支持TLS加密,提升了安全性。

7. 缓存与代理

HTTP协议还涉及到缓存代理的概念,以提高性能和降低带宽消耗。

  • 缓存控制:通过HTTP头(如Cache-ControlETag)来控制资源的缓存策略。

  • 代理服务器:充当客户端与服务器之间的中介,缓存常用资源,减少请求次数,或进行负载均衡。

相关文章:

  • ASP.NET Core 最小 API:极简开发,高效构建(下)
  • Navicat、DataGrip、DBeaver在渲染 BOOLEAN 类型字段时的一种特殊“视觉风格”
  • XSS学习2
  • QT6 源(37):界面组件的总基类 QWidget 的源码阅读(下,c++ 代码部分)
  • 微服务与 SOA:架构异同全解析与应用指南
  • 【leetcode刷题日记】lc.300-最长递增子序列
  • 【WTYOLO】使用GPU训练YOLO模型教程记录
  • javaSE.队列
  • UE5的BumpOffset节点
  • 【英语语法】词法---形容词
  • 思维题专题
  • Agent安装-Beszel​​ 轻量级服务器监控平台
  • (4)Vue的生命周期详细过程
  • Python赋能去中心化电子商务平台:重构交易生态的新未来
  • 嵌入式人工智能应用-第三章 opencv操作 4 灰度处理
  • C++11特性补充
  • 图论基础:图存+记忆化搜索
  • 相得益彰 — 基于 GraphRAG 事理图谱驱动的实时金融行情新闻资讯洞察
  • Linux 常用指令用户手册
  • 字节跳动发布UI-TARS-1.5,入门AI就来近屿智能
  • 抗美援朝老战士、华西医院精神科学术带头人之一袁德基逝世
  • 印度空军计划增购40架法制“阵风”战机,此前已购买36架
  • 重大虚开发票偷税骗补案被查处:价税2.26亿,涉700余名主播
  • “棉花糖爸爸”陈生梨:女儿将落户到贵州纳雍
  • 今年以来金价涨幅超26%,未来会继续上涨吗?
  • 魔都眼|上海半马鸣枪:白金标运动员、“箱根之子”齐参赛