asp网站有哪些,检察机关门户网站建设自查报告,个人 网站备案 幕布,环保局网站如何做备案证明这里是Themberfue 上篇文章介绍了HTTP报头的首行信息 本篇我们将更进一步讲解HTTP报头键值对的含义~~~ ❤️❤️❤️❤️ 报头Header ✨再上一篇的学习中#xff0c;我们了解了HTTP的报头主要是通过键值对的结构存储和表达信息的#xff1b;我们已经了解了首行的HTTP方法和UR… 这里是Themberfue 上篇文章介绍了HTTP报头的首行信息 本篇我们将更进一步讲解HTTP报头键值对的含义~~~ ❤️❤️❤️❤️ 报头Header ✨再上一篇的学习中我们了解了HTTP的报头主要是通过键值对的结构存储和表达信息的我们已经了解了首行的HTTP方法和URL那么我们继续深入一些其他的键值对含义吧 Host ✨host在英文中有 主人 主机 的意思所以在HTTP协议中host的值所存储的就是目标服务器的主机名或IP地址以及可选的端口号。例如www.bilibili.com[:8086]它是HTTP/1.1中强制要求的字段每个HTTP/1.1请求必须包含Host字段否则服务器会返回400 Bad Request。host的值的内容URL的主题内容大差不差不过在传输URL时是不会对URL加密的被加密的一般是Header和Body的内容所以服务器在收到请求后也可以做一个检验检验host的内容和URL的内容是否发生改变。 作用 1. 支持虚拟主机Virtual Hosting 多个网站可以托管在同一台服务器上使用相同的IP地址。Host字段的值指定客户端希望访问的具体网站。例如 请求A
GET /index.html HTTP/1.1
Host: www.example1.com请求B
GET /index.html HTTP/1.1
Host: www.example2.com服务器通过Host字段区分请求返回对应的网站内容。 2. 支持非标准端口 Host字段可以指定端口号使服务器知道客户端访问的具体服务。例如 GET /api/data HTTP/1.1
Host: www.example.com:8080这里的:8080明确了目标服务运行在8080端口而不是默认的80端口。 3. 增强请求路由能力 在负载均衡或反向代理场景中Host字段帮助服务器路由请求到对应的后端服务器。 Content-Length ✨中文直接翻译过来就是内容长度Content-Length指代的就是HTTP协议中body正文的内容长度单位是字节。我们知道通过HTTP构造的数据包只是在应用层上的我们还需经过传输层、网络层.....通过Content-Length传输层就可以直到这个HTTP数据包的正文内容有多少读到哪里知道消息体的预期长度。若是没有Content-Length这说明这个请求或者响应就没有body正文一般读到空行就表示该数据包读完了若有Content-Length就按照Content-Length所给定的值来读取body正文的内容。前面编写TCP代码时我们使用 hasNext() 方法也就是在暗指读到空行就结束读取。 作用 1. 消息完整性校验 客户端或服务器通过Content-Length字段知道消息体的预期长度。如果接收到的数据长度与Content-Length字段的值不符则认为数据可能丢失或损坏。 2. 分块数据解析 在持久连接中服务器需要知道消息体的确切长度以便从流中提取完整的消息。 3. 提高通信效率 通过提前知道消息体长度可以优化内存分配和处理逻辑。 Content-Type ✨在当今的互联网时代网络上的数据非常之多数据类型也非常之多纯文本、超文本、富文本、图片、视频......所以在传输数据时也需要知道该数据是哪个类型的那么Content-Type就充当此角色Content-Type表示请求的body的数据格式也提示了接受方如何解析body中的数据。Content-Type用于指示消息体中数据的媒体类型MIME类型它告诉接收方浏览器或服务器如何解析和处理消息体的数据内容。Content-Type负责标明数据的类型和格式它在请求和响应中都有广泛的应用确保了数据的正确传输和解析。 携带的数据类型 ✨HTTP可携带的数据类型还是比较全面、比较多的例如 HTMLtext/html 浏览器便会解析其中的标签把标签转换为界面显示CSStext/css 浏览器便会解析其中的选择器以及属性将这些样式应用到指定的内容上JSapplication/javascript 浏览器便会通过JS引擎执行这些JS代码的逻辑JSONapplication/json 浏览器通常不会做处理由程序员来对这些JSON数据进行操作图片image/png、image/jpg 浏览器按照图片的二进制格式解析出来并显示在页面上 文本类型text用于传输纯文本数据。 Content-Type: text/plain; charsetUTF-8
Content-Type: text/html; charsetUTF-8图片类型image用于传输图片数据。 Content-Type: image/jpeg
Content-Type: image/png应用类型application用于传输二进制数据或特殊格式的数据。 Content-Type: application/json
Content-Type: application/xml
Content-Type: application/pdf
Content-Type: application/octet-stream多媒体类型audio、video用于传输音频或视频文件。 Content-Type: audio/mpeg
Content-Type: video/mp4多部分类型multipart用于传输多部分数据如文件上传。 Content-Type: multipart/form-data; boundary------WebKitFormBoundary携带的格式 ✨Content-Type: 主类型/子类型; 参数 主类型数据的大类别例如text、image、application等。子类型具体的数据格式例如html、jpeg、json等。参数可选附加信息常见的是字符编码如charsetUTF-8。 Content-Type: text/html; charsetUTF-8作用 1. 明确数据格式 发送方通过Content-Type告知接收方消息体的数据格式。接收方根据Content-Type正确解析消息体避免误解。 2. 跨平台兼容 不同的系统、语言或平台都可以通过Content-Type理解数据格式实现兼容性。 3. 提高效率 客户端或服务器可以快速根据Content-Type选择合适的工具或库处理数据而不需要额外推断。 User-Agent ✨在2025年的今天有各式各样的设备都可以访问网页这些设备的性能不同屏幕大小不同为了让用户在不同设备上都有一个良好的浏览体验提前知道用户访问的设备信息从而返回不同的响应结果这是非常重要的。所以User-Agent便充当了这么一个角色User-Agent翻译过来就是用户代理其描述了用户访问网页时所使用的设备信息。User-Agent用于标识客户端的信息它告诉服务器发起请求的客户端是什么类型的设备、使用什么操作系统、运行什么软件如浏览器等。 常见结构 ✨典型的User-Agent字符串由多个部分组成以空格分隔主要包括 产品名称软件名、浏览器名等。版本号。操作系统信息。其他组件。 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36Mozilla/5.0 起源于早期的Netscape浏览器后来成为一种惯例。表示兼容Mozilla标准。Firefox火狐浏览器也是之一 (Windows NT 10.0; Win64; x64) 操作系统信息 Windows NT 10.0Windows 10。Win6464位版本。x64基于x64架构。 AppleWebKit/537.36 使用的渲染引擎WebKit及其版本。浏览器内核 Chrome/96.0.4664.93 浏览器名称和版本。 Safari/537.36 表明浏览器兼容Safari。Safari是苹果公司开发的浏览器用于苹果系统上 常见示例 1. 桌面浏览器 Chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36FireFox Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.02. 移动浏览器 Android Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Mobile Safari/537.36iPhone Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.13. 搜索引擎爬虫 Googlebot Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)Bingbot Mozilla/5.0 (compatible; bingbot/2.0; http://www.bing.com/bingbot.htm)作用 1. 适配响应内容 服务器可以根据客户端的User-Agent信息返回适合该设备的内容。根据不同的设备返回呈现不同的样式不同的排版这便是响应式编程。例如给移动设备返回简化页面给桌面设备返回完整版页面。 2. 统计与分析 网站通过记录User-Agent分析用户使用的设备、浏览器、操作系统等优化产品策略。 3. 调试和诊断 开发者通过User-Agent信息了解客户端环境定位问题。 4. 安全和反爬虫 服务器可以根据User-Agent区分正常用户和爬虫也可以设置特定策略限制某些类型的访问。 KHTML, like Gecko ✨这个标识感兴趣的了解即可不感兴趣可以直接跳过了。KHTML, like Gecko用来表明浏览器的渲染引擎及其兼容性KHTML 是一个开源的浏览器渲染引擎最初由 KDE 项目为 Konqueror 浏览器开发。解析 HTML 和 CSS呈现网页内容处理 JavaScript 的执行。轻量级设计目标是简洁和高效灵活性强为后来的浏览器渲染引擎如 WebKit奠定了基础。Gecko 是 Mozilla 开发的浏览器渲染引擎用于 Firefox 和其他基于 Mozilla 的浏览器。强大的标准兼容性可扩展性高支持多种插件和扩展功能更新迭代快适应最新的 Web 技术。like Gecko 表明当前浏览器的渲染行为与 Gecko 引擎兼容尽管它可能并非真正基于 Gecko。这是为了在服务器端解析 User-Agent 时提高浏览器的兼容性。一些网站或服务会根据 User-Agent 优化内容。如果声明与 Gecko 兼容则可以避免某些不必要的功能限制。由于苹果公司在 KHTML 的基础上开发了 WebKit用于 Safari 浏览器。WebKit 最终成为许多现代浏览器的基础如 Chrome 的 Blink 引擎。为了兼容旧版的服务器解析逻辑WebKit 在 User-Agent 中保留了 KHTML 的标识。like Gecko 则是为了表明 WebKit 的渲染效果类似于 Gecko从而避免被视为不兼容的浏览器。KHTML, like Gecko 是一种历史遗留标识最初用于声明浏览器兼容性避免因 User-Agent 解析引起的兼容性问题。它已经成为现代浏览器中 User-Agent 的惯用格式即使没有实际功能意义但可以提高服务器对浏览器的兼容性处理。 Referer ✨我们知道当今的网页已经不仅仅局限于一个网页虽然也有SPA在某些情况下我们需要知道当前网页是从哪个网页跳转来的所以Referer 便充当了这么个角色。Referer翻译过来就是 来路其用于标识当前请求的来源页面。它的主要作用是告诉服务器该请求是从哪个 URL 链接点击跳转过来的。 作用 1. 统计与分析 服务器可以通过 Referer 头字段了解流量来源例如某个用户是从搜索引擎、广告链接还是其他页面访问了当前页面。便于网站管理员优化流量入口。 2. 追踪导航路径 Referer 记录了用户从哪个页面跳转而来方便了解用户的访问路径。 3. 防盗链 某些网站通过 Referer 检查请求来源防止其他网站未经授权直接引用其资源如图片、视频等。 4. 广告投放效果评估 广告主可以通过 Referer 数据统计广告链接的点击率和效果。 Referer对广告系统的作用 ✨广告系统的计费方式很多其中一个比较有名的就是 CPC点击计费也就是按用户的点击量来计费例如点击一次就5分钱。所以需要统计某个投放的广告点击了多少次比如按一个月来算一个月后需要浏览器开发商和广告主都统计点击量然后核对数据是否一致随后由广告主支付相应的广告费用。浏览器开发商统计点击量就比较方便了只需要在点击时先访问该开发商的 计费服务器 再访问该广告计费服务器通过记录日志从而生成相应的数据。而广告主就比较麻烦了因为广告主可能向不止一家浏览器开发商投放广告所以就需要知道该广告是从哪个浏览器点击来的那么通过 Referer 就可以很快的知道是从哪个浏览器点击来的从而对各个浏览器的点击量分别统计。但由于 HTTP协议 最初是明文传输的所以再传输时Referer 可能会被别人篡改如果被篡改了统计的数据就变少了这造成的损失就大了啊。运营商ISP劫持就是当时比较常见的所有互联网服务都要经过运营商的设备所以运营商就有机会对这里面的数据进行修改运营商也要恰钱的啊运营商当然也会投放广告运营商便更改成了运营商的 Referer从而运营商这边的点击量就 多 了。当时的法律明文对这些的判处还是比较模糊的为了解决这个问题国内的大厂就开始纷纷使用 HTTPS协议HTTPS协议 可以对 Referer 进行加密这样运营商就不能轻易更改了随后愈来愈多的互联网厂商都纷纷跟进使用 HTTPS协议。在2025的今天想要看到使用 HTTP协议 的网站是很难的。 Referer 的改进Referrer Policy ✨为了解决 Referer 的隐私问题现代浏览器引入了 Referrer Policy它允许开发者控制 Referer 信息的发送方式。常见的 Referrer Policy 选项 no-referrer 不发送任何 Referer 信息。 no-referrer-when-downgrade 仅在跨协议从 HTTPS 跳转到 HTTP 时不发送 Referer默认行为。 origin 只发送来源的主域名例如 https://example.com。 strict-origin-when-cross-origin 同源请求发送完整 Referer跨域请求只发送来源的主域名。 origin-when-cross-origin 同源请求发送完整 URL跨域请求只发送主域名。 Cookie ✨Cookie 翻译就是 曲奇 (bushiCookie 是一种存储在用户浏览器中的小型数据文件用于在客户端和服务器之间共享状态信息。它由服务器通过 HTTP 响应发送并由浏览器在后续请求中回传给服务器。浏览器在展示页面的过程中是通过 JS 代码来执行一些操作当时 JS 无法直接访问你电脑的文件系统这是浏览器给 JS 做的一个限制这么做是为了防止某些不法分子直接读取你的文件系统然后做些不可描述的事情。因此浏览器引入了 Cookie机制Cookie就是浏览器允许网页在本地硬盘存储数据的一种机制并非通过 JS 代码直接访问文件系统而是做了一层抽象浏览器的 Cookie提供了键值对存储机制。 作用 1. 会话管理 维持用户登录状态例如购物车内容、用户偏好等。 2. 个性化设置 保存用户的语言偏好、主题颜色等设置以便在下次访问时自动应用。 3. 跟踪与分析 用于统计用户行为数据例如记录访问次数、来源等。 ✨Cookie可以通过浏览器自带的开发者工具查看我们以 bilibili 的Cookie 为例✨这Cookie里的键值对是什么意思我们当然不知道因为这是程序员自定义的只有写这些代码才能看懂这是些是什么含义。 Cookie的结构 ✨虽然 Cookie 的内容是由程序员定义的但其结构和格式是由 HTTP 协议统一规定的以保证不同的浏览器和服务器可以正确解析和传输数据。程序员可以在键值和属性的设置上自由发挥但必须遵循协议规范来实现一致性和可操作性。 Set-Cookie: keyvalue; Attribute1Value1; Attribute2Value2Set-Cookie: session_idabc123; Path/; HttpOnly; Secure; Max-Age3600session_idabc123键值对表示存储的具体数据。Path/Cookie 作用范围指定在该路径下的请求会附带该 Cookie。HttpOnly限制 Cookie 只能通过 HTTP 请求访问防止 JavaScript 操作增强安全性。Secure要求仅在 HTTPS 连接中发送。Max-Age3600设置 Cookie 的存活时间秒。Domain指定该 Cookie 可用的域名。......... Cookie 的生命周期 会话 Cookie 默认情况下Cookie 是临时的仅在浏览器会话期间有效关闭浏览器即删除。 持久化 Cookie 使用 Max-Age 或 Expires 属性设置过期时间使其在浏览器关闭后仍有效。 Cookie 的特性与限制 大小限制 每个 Cookie 的大小通常限制在 4KB。 数量限制 每个域名下的 Cookie 数量有限通常为 20-50 个。 同源限制 Cookie 只能在设置它的域及其子域中使用。 Cookie 的安全性问题 劫持风险 未加密的 Cookie 在传输过程中容易被拦截可通过 Secure 属性缓解。 跨站脚本攻击 (XSS) 恶意脚本可能窃取 Cookie可通过 HttpOnly 属性避免。 跨站请求伪造 (CSRF) 恶意网站可能利用用户的 Cookie 发起伪造请求可结合 Token 验证抵御。 Cookie 与现代替代方案 ✨随着隐私需求的提升和浏览器技术的发展Cookie 在某些场景中正逐渐被其他技术取代 LocalStorage/SessionStorage 更适合存储客户端数据不会自动发送到服务器。 Token-Based Authentication 使用 JWTJSON Web Token替代 Cookie 来存储用户认证信息。 SameSite 属性 限制跨站点请求时发送 Cookie有效缓解 CSRF 攻击。 Session ✨Session 翻译过来就是 会话是一种在服务器端保存用户状态信息的机制用于跟踪和管理用户的会话。它通过一种唯一标识符Session ID将用户的请求与服务器上的状态关联起来通常与 Cookie 一起使用。Session可以用来在用户与服务器之间维持状态信息它解决了 HTTP 协议本身是无状态协议的问题。在 HTTP 的通信中服务器无法直接知道两次请求是否来自同一个用户而 Session 提供了这样一个机制可以让服务器“记住”用户的状态。简单来说就是保存用户的一些信息但是在服务器端存着因为这些数据通常较为隐私。而 Cookie 通常保存在客户端。Cookie 中的 Session-id 通常是会过期的这由开发人员自己设定根据不同的业务场景设置不同的过期时间。在某些视频网站、论坛网站等用户信息不敏感的场景下例如B站、抖音、贴吧、知乎等平台其过期时间通常比较长。在某些银行App、网银等用户信息敏感的场景下其过期时间通常非常短短到你关闭了App就可能需要重新登录。 Session 的基本原理 ✨在绝大多数网站都有 登录和用户认证功能而这里便是 Session 的一个经典使用场景 1. 客户端发起请求 用户首次访问服务器时服务器会为该用户创建一个唯一的 Session 对象。 2. 生成 Session ID 服务器生成一个唯一的 Session ID用于标识用户会话并将该 ID 返回给客户端。 3. 客户端存储 Session ID Session ID 通常通过 Cookie 存储在客户端或直接附加在 URL 参数中。 4. 服务器存储会话信息 服务器将用户的状态信息如登录状态、购物车内容等存储在服务器的内存、数据库或文件系统中。 5. 后续请求 每次客户端发送请求时会附带 Session ID服务器通过 Session ID 查找到对应的会话信息。 特点 存储在服务器端用户的具体数据存储在服务器中比 Cookie 更加安全。支持大规模信息Session 可以存储复杂、较大规模的数据结构而 Cookie 的容量较小约 4KB。 短期存储Session 通常与用户的会话周期一致用户关闭浏览器或会话超时后失效。 生命周期 创建当用户第一次访问应用时服务器创建 Session。 访问每次用户请求时服务器会根据 Session ID 获取用户的会话信息。 销毁Session 可以通过以下方式销毁 主动调用销毁方法如用户注销。 达到超时时间通常默认 30 分钟。 服务器重启或存储 Session 的媒介被清空。 优点 数据存储在服务器安全性更高。支持更复杂、更大规模的数据存储。易于扩展和管理。 缺点 会增加服务器的存储压力尤其是高并发场景下。如果依赖 Cookie 保存 Session ID可能受到 Cookie 限制。在分布式系统中需要额外机制如共享存储或会话粘性保持一致性。 实际场景中的应用 用户登录用户登录成功后服务器生成 Session保存用户的登录状态及相关信息。电商购物车用户未登录时的购物车信息可以保存在 Session 中登录后与数据库中的购物车合并。跨页面的数据传递当用户在多步操作如填写表单中需要保持上下文状态时可以将数据存储在 Session 中。 ✨这边还有一个小例子可以更好的说明 Session 的重要性 去医院看病通常需要挂号挂完号之后就给你办理个就诊卡办理就诊卡通常需要你填写一些你的个人信息而医生将这些个人信息存入到电脑这些个人信息就好比 Session而就诊卡就好比 Session-id。比方说你去看儿科刷一下就诊卡医生电脑上就显示出了这个患者的全部信息随后医生作了一些检查叫你去检验科刚刚做过的检查存入到Session中。你来到了检验科重复上诉操作就叫你去影像科拍片你来到了影像科重复上诉操作就叫回到儿科你回到了儿科再刷一遍就诊卡就显示出了你刚刚就诊的一些情况医生根据这些情况做进一步判断你的病情。 在这个过程中都是通过就诊卡 Sesson-id 来确认你的个人信息的就不需要额外更多的信息了你的隐私信息都在医院那边安全存储着。 今天的内容到这就结束了下节我们将讲解HTTP状态码和HTTPS加密那些事儿~~ 毕竟不知后事如何且听下回分解 ❤️❤️❤️❤️❤️❤️❤️