JavaEE: 深入解析HTTP协议的奥秘(3)

news2024/10/8 18:32:31

文章目录

  • HTTP
    • 认识 "报头"(Header)
    • 认识 "状态码"(status code)


HTTP

JavaEE: 深入解析HTTP协议的奥秘(2)

书接上文~


认识 “报头”(Header)

Header 的整体的格式是"键值对"结构.

每个键值对占一行,键和值之间使用分号分隔.

  • Host 表示服务器主机的地址和端口.

  • Content-Length 表示 Body 中的长度.单位是字节.

    Content-Length 告诉我们,这一个 HTTP 数据报到哪里就结束了.
    HTTP 基于 TCP,TCP 是面向字节流的,存在粘包问题.
    如何解决粘包问题:
    1. 指定分隔符. 如果一个 HTTP 数据报没有 Body ,此时空行就相当于分隔符了.
    2. 指定数据报长度. 如果一个 HTTP 数据报有 Body ,此时 Content-Length 就描述了 Body 的长度.

  • Content-Type 表示请求的 Body 中的数据格式.浏览器会根据这个格式来决定如何解析数据.

    Content-Type 和 Content-Length都属于是在 请求 和 响应 中都会存在的.
    Content-Type 的详细情况

  • User-Agent (简称 UA) 表示浏览器/操作系统的属性.
    在这里插入图片描述
    在以前 UA 的意义更大.
    当年的上网设备,进化速度非常快,同一时刻,会有很多种不同的设备都在被各种用户使用.

    这对网站的开发人员,带来了一定挑战.

    如果网站只支持文字图片,在用好设备的人的眼里,就太 low 了.
    如果网站能够支持复杂多媒体,在用不好的设备的人眼里,压根就无法正确显示.

    解决方案: 同时开发出多个不同版本的页面(有的只有文字图片,有的包含复杂多媒体),判断 UA 字段,通过 UA 获取到用户的浏览器信息和操作系统信息,这样就可以判定当前用户的浏览器版本都支持哪些特性,从而展示对应的页面.

    在今天,虽然浏览器大家都差不多,但是上网的设备还是存在差别(PC / 手机 , 屏幕尺寸(比例)是截然不同的).
    为了解决上述问题,我们仍然可以通过 UA 来切入.但是这个方案不是特别理想,你想象一下,除了PC和手机外,还有平板~

    平板的 UA 看起来和手机一样,而且使用平板的时候,不同的人的使用习惯不同.有的人是横屏使用,有的人是竖屏使用~

    针对上述问题,在前端开发圈子里,研究出了个东西"响应式编程",在前端代码中(主要是 CSS ),能够自动查询出当前屏幕的尺寸,并结合尺寸对页面自动进行重新排版.

    UA 现在还有一个作用,就是用来做数据统计.
    比如说一天有多少广告被展示,多少被点击,哪些广告点击率高~
    根据统计结果,进一步的迭代改进产品.
    UA 的统计主要是用来区分 PC 和移动端的,有多少人通过 PC 访问,又有多少人通过移动端访问.

    User-Agent 的故事

  • Referer 表示这个页面是从哪个页面跳转过来的.

  • Cookie
    在这里插入图片描述
    Cookie 也是键值对结构,使用 ; 来分隔键值对,使用 = 来分隔键和值.

    键值对的含义都是程序员自定义的.

    Cookie 是浏览器本地持久化存储数据的一种机制,按照键值对方式存储,键值对的内容都是程序员自定义的,按照域名为维度分别进行存储(每个网站有自己的 Cookie, 但相互不影响)
    在这里插入图片描述
    为了安全,浏览器禁止网页直接访问你的硬盘.(文件系统)
    万一你打开某个网站,结果你电脑上所有的文件都被删除了…

    虽然不能直浏览器禁止网页接访问硬盘,但是浏览器允许通过键值对的方式来存储数据(这样的数据本质上也是在硬盘上),具体这样的键值对是如何存储到硬盘上的,浏览器封装好,网页本身无法干预.
    这样的一个机制,就是 Cookie.

    Cookie 里面的内容也是来自于服务器,首次访问某个网站,可能是不带 Cookie 的,在响应中就会有 Set-Cookie 这样的 Header, 把一些键值对写回到浏览器这边.浏览器后续访问这个网站就会带有 Cookie ~

    有一个 Cookie 非常经典的使用场景 — 使用 Cookie 保存用户的身份信息.

    对于 HTTP 来说,针对同一个服务器,每一次的 HTTP 请求彼此之间都是独立的.

    登录前是一个请求,后续的请求是如何知道我处于登录状态呢?
    在这里插入图片描述
    更简洁一点的图:在这里插入图片描述

认识 “状态码”(status code)

状态码表示访问一个页面的结果.(是访问成功,还是失败,还是其他的一些情况…)

以下为常见的状态码:

  • 200 表示访问成功.
  • 404 Not Found 没有找到资源.
  • 403 Forbidden 表示访问被拒绝.
  • 405 Method Not Allowed
  • 500 Internal Server Error 服务器出现内部错误.
  • 504 Gateway Timeout
    当服务器载荷比较大的时候,服务器处理单挑请求的时候消耗的时间就会很长,就可能会导致出现超时的情况.
  • 302 Move temporarily 临时重定向.
    访问 A 网站,自动跳转到 B 网站.

    举个例子: 我要换手机号码 A -> B.
    我的朋友同学都是存了 A ,不知道 B.
    只需要我办理呼叫转移,那么有人给 A 打电话就会自动转接到 B 上~

小知识:

  • 1xx:信息状态码,接受到请求正在处理
  • 2xx:成功状态码,请求正常处理完毕
  • 3xx:重定向状态码,需要进行附加操作来完成请求
  • 4xx:客户端错误状态码,服务器无法处理请求
  • 5xx:服务器错误状态码,服务器处理请求出错

本文到这里就结束啦~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2196961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM实现跨平台的关键因素:class文件和“翻译器”

文章目录 前言关键因素:class文件class文件格式说明Java 源代码在class文件中的体现涉及到的知识点(面试题) 关键因素:“翻译器”解释器即时编译器(JIT) 总结 前言 当你通过上文对JVM有了初步的认识后&…

【电路】1.3 电功率和能量

1.3 电功率和能量 电是一种能量存在形式。 1.3.1 电压的定义 将单位正电荷由A点移动至B点,电场力所做的功是 w w w,则 u A B d w d q u_{AB}\frac{dw}{dq} uAB​dqdw​, w w w是功, q q q是电荷量从A到B,沿着任意路…

Squid + Stunnel 配置

环境: 亚马逊服务器一台:3.26.80.132 华为云服务器一台:122.59.52.68 客户机一台: Win11 实现的需求:客户机通过设置华为云代理,实现透过亚马逊服务器上网 一、亚马逊服务器 1、安装Squid https://bl…

刚转Mac的新手如何卸载不需要的应用程序

最开始转Mac系统的时候很是苦恼,到底该怎么卸载App啊,App直接拖到废纸篓真的能卸载干净吗,卸载App时会不会留下一些文件残留,慢慢的会不会占满内存,于是我找到了一个免费的卸载工具——XApp。 这是一款Mac应用程序卸载…

《贪吃蛇小游戏 1.0》源码

好久不见&#xff01; 终于搞好了简易版贪吃蛇小游戏&#xff08;C语言版&#xff09;&#xff0c;邀请你来玩一下~ 目录 Snake.h Snake.c test.c Snake.h #include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #inclu…

某国有资本运营中心人才选拔项目纪实

某国有资本运营中心人才选拔项目纪实 【客户行业】 政府与事业单位 【问题类型】 人才招聘选拔 【客户背景】 在三年国企改革过程中&#xff0c;南方某省政府为响应国家政策&#xff0c;提出组建专业化国有资本投资运营公司&#xff0c;大力开展专业化资本运营&#xff0c;…

016 规格参数

文章目录 新增AttrController.javaAttrVo.javaAttrServiceImpl.javaAttrAttrgroupRelationEntity.javaAttrEntity.javaAttrGroupEntity.java 查询AttrController.javaAttrServiceImpl.javaAttrRespVo.java 修改回显AttrController.javaAttrServiceImpl.java 修改提交AttrContro…

京东云主机和云服务器有啥区别?轻量云主机就是轻量应用服务器吗?

京东云主机和云服务器有啥区别&#xff1f;轻量云主机就是轻量应用服务器吗&#xff1f;云主机就是云服务器的意思&#xff0c;是京东云给自家云服务器取的名字&#xff0c;阿里云叫云服务器ECS&#xff0c;腾讯云叫云服务器CVM&#xff0c;京东云服务器叫云主机&#xff0c;京…

C++ osgEarth 多窗口 同步绘制geometry

开发环境&#xff1a; win10 64bit、Qt5.15.2、C 、MSVC2019 、osg3.5.6、 osgEarth3.1 接触osgEarth不久&#xff0c;贴出来&#xff0c;希望大家指正。 注意osgEarth版本。 采用观察者设计模式&#xff0c;设置 master 和 slave 窗口&#xff0c;通过管理类和信号槽维护窗…

_c++11

嗨喽大家好呀&#xff0c;今天阿鑫给大家带来的是c进阶——c11的内容&#xff0c;好久不见啦&#xff0c;下面让我们进入本节博客的内容吧&#xff01; _c11 统一的列表初始化右值引用可变模板参数(了解&#xff0c;不常接触)lambda表达式function和bind包装器 1. 统一的列表…

JavaWeb 15.详解Servlet及其源码

所有受过的委屈&#xff0c;都在提醒你 要好好争气。 —— 24.10.7 一、Servlet简介 1.动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源&#xff0c;在程序运行之前就写好的资源&#xff0c;例如&#xff1a;html、css、js、img、音频文件和视频文件 …

职场秘籍:面试加薪,竟然拥有不同的技巧!

假如你是一位测试主管&#xff0c;去评价一名测试工程师是否优秀&#xff0c;那么你将如何去判断呢&#xff1f;你最看重的是哪方面的能力呢&#xff1f; 对于这个问题&#xff0c;是不能一概而论的&#xff0c;要分为两种情况&#xff0c;情况不同&#xff0c;答案一定是不同…

高校新生报道管理系统使用SpringBootSSM框架开发

&#xff01;&#xff01;&#xff01;页面底部,文章结尾,加我好友,获取计算机毕设开发资料 目录 一、引言 二、相关技术介绍 三、系统需求分析 四、系统设计 五、关键技术实现 六、测试与优化 七、总结与展望 一、引言 当前高校新生报到过程中存在许多问题&#xff0c;…

从0到1:用Python构建你人生中的第一个人工智能AI模型

文章目录 摘要引言数据预处理&#xff1a;为模型打下坚实基础数据预处理的步骤Python示例代码说明&#xff1a;注意事项&#xff1a; 模型建立&#xff1a;选择合适的模型神经网络示例代码说明&#xff1a; 模型训练与测试训练示例代码说明&#xff1a; 解读模型结果性能指标 深…

原生小程序开发|小程序卡片(Widget) 开发指南

开发 Widget 代表应用的一个小程序卡片&#xff0c;负责小程序卡片的展示和交互。 小程序卡片(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小程序卡片(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小程序卡片(Widget)项目 在 …

九、Drf序列化器

九、序列化器 9.1序列化 从数据库取QuerySet或数据对象转换成JSON 9.1.1序列化器的简易使用 #新建一张部门表 class Depart(models.Model):title=models.CharField(verbose_name=部门,max_length=32)order=models.IntegerField(verbose_name=顺序)count=models.IntegerFiel…

vscode中安装python的包

首先需要调出命令行。然后运行代码&#xff0c;找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法

摘要 本文探讨了三种不同的无人机三维路径规划算法&#xff0c;即蚁群算法&#xff08;ACO&#xff09;、A算法&#xff08;Astar&#xff09;以及快速随机树算法&#xff08;RRT&#xff09;。通过仿真实验对比了各算法在不同环境下的性能&#xff0c;包括路径长度、计算效率…

软考越来越难了,2024年软考究竟还值不值得考?

最近不少同学沟通&#xff0c;聊到软考现在越来越难了&#xff0c;考了两三次都没过&#xff0c;也有不少新同学咨询软考考试的一些福利政策&#xff0c;投入大量的物力&#xff0c;财力&#xff0c;精力&#xff0c;那么到底软考值不值得考呢&#xff1f; 01 / 关于软考 软考…

【FlagScale】异构算力混合训练方案

背景以及必要性 算力需求的高峰&#xff1a;随着人工智能&#xff08;AI&#xff09;和生成内容&#xff08;AIGC&#xff09;的发展&#xff0c;对计算资源的需求急剧增加。尤其是参数规模达到数百亿的大模型训练&#xff0c;需要大量的计算资源。 算力市场供应紧张&#xff…