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

JavaEE 初阶第二十九期:HTTP协议深度揭秘(三)

专栏:JavaEE初阶起飞计划

个人主页:手握风云

目录

一、HTTP 请求

1.1. 认识请求 "header" (报头)

1. Referer

2. Cookie

二、HTTP 响应

2.1. HTTP 状态码


一、HTTP 请求

1.1. 认识请求 "header" (报头)

1. Referer

        Referer(正确拼写应为 Referrer,因历史错误沿用至今)是 HTTP 请求头字段,用于标识当前请求的来源页面 URL。作用是服务器通过 Referer 了解用户从何处跳转而来,用于流量统计、防盗链、内容推荐等。比如:当我们打开一个搜索引擎时,在搜索框里面输入一些内容跳转到另一个页面,再去点击这个网页上其他的连接、提交表单或者图片就会触发 Referer 请求。

        需要注意:我们在浏览器的地址栏输入URL,点击书签栏里的连接,或者是使用Chrome浏览器的无痕模式,是不会发送Referer请求的。

2. Cookie

        Cookie 是服务器发送到用户浏览器并存储在本地的小型数据文件,用于跟踪用户状态、偏好或行为。它是 HTTP 协议的 “无状态” 补充,让服务器能识别用户身份(如登录状态)。

        从上图中我们可以看到 Cookie 的格式是键值对,多个键值对用 ; 分隔,单个键值对用 = 分隔 “键” 和 “值”。一个 Cookie 包含以下关键信息:名称 / 值,用于唯一标识用户的会话 ID;过期时间,分为会话Cookie(浏览器关闭后失效)和持久Cookie(某个网站的账号和密码);域 / 路径,限制 Cookie 的作用范围。

        当用户通过浏览器访问某个网站时,所有数据都来自服务器,且 “无人审核”,理论上危险性更高。但浏览器会严格限制网站权限:禁止网站随意访问硬盘、调用电脑其他应用程序,因此能 “控制风险”(即使网站有风险,也不会对电脑造成大范围破坏)。Cookie 的内容由服务器返回给浏览器,浏览器再将其存储到本地,为了安全,网站不能 “随意读写硬盘”,只能按 “键值对” 这种简单格式存储少量数据(而非任意操作文件),这就是 Cookie 的产生与存储限制。

        当我们在 Edge 浏览器里面打开百度的网址,在 URL前面的一个锁图标,就能查看 Cookie 和站点数据,会发现里面有2组Cookie。浏览器本地存储 Cookie 的时候按照域名维度进行管理的,虽然是不同的域名,但都是属于百度的。当我们点开一个 Cookie 之后,就可以看到里面的键值对。如果我们删除了这些 Cookie 之后,那么抓包结果请求里面就不会有 Cookie,但是响应报文里面会有 Set-Cookie。

        Cookie的本质是浏览器在本地存储数据的一种机制 —— 把服务器返回的信息,以 “键值对” 形式存到本地硬盘。它相当于网站给用户的 “身份证”,让网站记住你是谁,但需警惕被冒用或窃取。所以 Cookie 的一个典型应用场景就是登录过程。

        理解登录过程的核心是浏览器与服务器通过 HTTP 协议完成身份验证,并通过 “令牌” 实现后续身份识别。第一步,获取登录页面:当用户在浏览器中访问网站的登录页面时,浏览器会向服务器发送一个 HTTP 请求(通常是 GET 请求),目的是获取登录页面的 HTML 资源。服务器收到请求后,会返回包含登录表单(输入用户名、密码的界面)的 HTTP 响应,浏览器解析该响应后,展示出登录页面供用户操作。第二步,提交用户身份信息:用户在登录表单中输入用户名、密码(部分场景还需验证码等)并点击 “登录” 按钮后,浏览器会将这些身份信息通过 HTTP 请求(通常是 POST 请求)发送给服务器。第三步,服务器验证与发放令牌:服务器接收到用户的身份信息后,会在后台校验用户名和密码的正确性。若验证通过,服务器不会直接返回用户需要访问的页面,而是会生成一个唯一的身份令牌(Token),并通过 HTTP 响应的Set-Cookie字段将令牌返回给浏览器。第四步,后续访问通过令牌识别身份:登录成功后,用户访问该网站的其他页面(如个人主页、设置页面)时,浏览器会自动在 HTTP 请求的 Cookie 字段中携带之前获取的令牌。服务器收到请求后,会校验 Cookie 中的令牌有效性:若令牌合法,则直接返回对应页面的资源;若令牌无效(如过期、篡改),则会要求用户重新登录。

        我们可以把这个过程类比成去医院看病。患者到医院后,用户凭身份证挂号,得到一张 “就诊卡”(相当于登录中的 “令牌”),就诊卡记录了用户的身份信息。后面去科室检查、开药时,无需重复出示身份证,只需提供就诊卡,医生即可通过就诊卡识别用户身份并调取病历(相当于服务器通过令牌识别用户并提供对应资源)。看完病后,若注销就诊卡(或卡片过期),后续再就诊需重新挂号(相当于网站注销后,需重新输入用户名密码获取新令牌)。

        令牌的安全性:令牌通常是加密后的字符串,仅服务器能解析其含义,即使黑客截获 Cookie 中的令牌,若未破解加密规则,也无法伪造身份;不同网站的令牌相互独立(不同域名下的Cookie不冲突),例如码云的令牌无法用于访问百度一下,保障了身份标识的唯一性。

二、HTTP 响应

2.1. HTTP 状态码

  • 200 OK,表示访问成功

        HTTP 请求成功的标准响应。实际的响应将取决于所使用的请求方法。在GET请求中,响应将包含与请求的资源相对应的实体。在POST请求中,响应将包含描述或操作结果的实体。需要注意,这不代表在业务方面的成功,比如注册账号时,显示用户名已存在,导致提交失败。

  • 404 Not Found

        请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求。

  • 403 Forbidden

        服务器已经理解请求,但是拒绝执行它。比如在 gitee 中,我们以未登录的状态去访问自己的私密仓库时,就会访问受限。

  • 502 Bad Gateway

        特指代理服务器 / 网关从上游服务器(如后端应用服务器)收到无效或未完成的响应。通俗理解:“中间服务器(如 Nginx)想帮你转发请求,但上游服务器没给出合法回应”。502 错误的本质是代理与上游的通信失败,排查需结合日志分析、性能监控、网络诊断。日常通过缓存优化、限流降级、自动扩展可大幅降低风险。

  • 301 Moved Permanently

        301 是 3xx 重定向状态码,指示请求的资源已永久迁移至新地址(Location 头指定),客户端应更新所有对旧 URL 的引用(RFC 2616)。

  • 302 Found

        HTTP 302 Found 是 3xx 重定向状态码,指示请求的资源临时迁移至新 URL(Location 头指定),客户端每次请求旧 URL 时需重新验证不缓存重定向规则(RFC 7231)。

http://www.dtcms.com/a/474453.html

相关文章:

  • ReentrantLock中的Condition
  • 基于Spring Boot + Vue 3的乡村振兴综合服务平台架构设计与实现
  • 专门做门的网站软件开发公司专业的有哪些
  • 网站不用了 怎么关闭吗做资源网站怎么赚钱
  • J东h5st逆向实战
  • 营销型网站如何制作软件设计师含金量高吗
  • 【MySQL】从零开始了解数据库开发 --- 基本查询
  • LeetCode进阶算法题解详解
  • 构造器是什么
  • docker desktop安装(windows os)
  • 免费的网站域名查询app国外的营销网站有哪些
  • 大模型基础入门与 RAG 实战:从理论到 llama-index 项目搭建(有具体代码示例)
  • 保定网站建设报价网页设计图片变圆角
  • 网站首页没收录大连网站流量优化定制
  • 基于CAN的UDS诊断服务
  • C++ : AVL 树之 右左双旋(第四章)
  • 南阳网站制作哪家好西安专业网站开发哪家好
  • 在 Windows PowerShell(pwsh)中配置 Oh My Posh + Conda 环境美化与性能优化
  • 小榄做网站新专业建设的重点任务
  • 把AI“浓缩”到1KB:超紧凑型决策树在MCU上的极限优化实战
  • Spring Boot 原理篇
  • 站酷网免费素材图库官网竣工验收全国公示平台
  • eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
  • 【Chrome插件】‘顾得助手’ 新功能介绍
  • 【控制系统建模与分析#1】电系统建模
  • 【Linux系统】9. 基础开发工具(三)
  • 付费网站做推广哪个好wordpress 顶部导航
  • 什么是AIGC?AIAIGCAGI什么区别?
  • NLP入门
  • 最低成本做企业网站 白之家杭州动漫设计公司最新招聘