Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

文章目录

  • HTTP协议
    • 1.HTTP协议是什么?
    • 2.HTTP协议的特点
    • 3.什么是URL?
    • 4.通过浏览器控制台学习HTTP协议
      • Request Headers请求数据格式说明
      • Response Headers请求数据格式说明
    • 5.HTTP工作原理

HTTP协议

1.HTTP协议是什么?

HTTP协议是一种超文本传输协议,规定了浏览器和服务器之间的数据传输的规则(也可以说是浏览器与服务器之间进行数据交互的数据格式)

例如,浏览器需要向服务端发送请求来获取一些数据,因此浏览器携带请求数据先向服务器发送请求,服务器解析浏览器的请求数据后再给浏览器响应对应的数据,让浏览器解析。浏览器和服务器之间进行数据交互,需要按照约定的数据格式进行双方才能进行相应的数据解析。

HTTP概括如下:

  • HTTP协议是用于从服务器传输超文本到本地浏览器的传送协议。
  • HTTP基于TCP/IP通信协议进行传送数据(数据可以是HTML文件,图片,查询结果等)
  • HTTP是一个属于应用层的面向对象的协议。
  • HTTP协议工作于客户端-服务器架构之上。

2.HTTP协议的特点

  • HTTP支持B/S(浏览器与服务器架构模式)模式C/S(客户机与服务器架构)模式
  • 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径即可。请求方法包括GET、POST、PUT、HEAD等。
  • 灵活性:HTTP允许传输任意类型的数据对象。
  • 面向连接:限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后,立即断开。可以节省传输时间。
  • 无状态:HTTP协议对于处理没有记忆能力,如果在处理过程中客户端与服务器端之间的连接断开,则数据必须重传。每次请求-响应都是独立的,速度会比较快但同时也导致多次请求间不能共享数据。
  • 基于请求-响应模型:一次请求对应一次响应

3.什么是URL?

HTTP使用**URI(统一资源标识符)**来传输数据和建立连接。

**URL是一种特殊类型的URI,包含了用于查找某个资源的足够信息。**它用于定位和识别互联网上的资源的地址。它是一个字符串,由多个部分组成,用于指定资源的位置和协议。

简单来说我们平时在浏览器中所看到的网址就是URL,在项目开发中我们需要指定文件,图片的位置也是URL。

以一个URL示例:https://www.example.com/index.html
一个URL主要包括以下几个部分

  • 协议部分:“https://”,指定使用的协议
  • 域名部分:指定了资源所在的服务器域名。
  • 路径部分:指定了服务器上资源的路径。

URL还可以包含其他部分,如查询参数、片段标识符等,用于进一步定位和描述资源。
例如本博客草稿的URL:https://i.cnblogs.com/posts/edit;postId=17878440

4.通过浏览器控制台学习HTTP协议

1.按下F12按键或者右建"检查",打开开发者工具

2.选择网络(Network)查看请求内容

3.点击这个请求,就可以看到相关的协议信息

部分浏览器是英文显示,显示的内容为:General(常规),Response Headers(响应标头),Request Headers(请求标头)

4.点击旁边的按钮“原始”,则会显示原始数据格式

可以看到,原始数据格式就是文本字符串,且这个文本字符串的格式是固定的

Request Headers请求数据格式说明

请求数据格式大致分为三个部分:请求行,请求头,请求体

1.请求行:即请求数据的第一行,由请求方式(GET或POST),资源路径,请求协议三部分组成。

  • GET请求方式:没有请求体,大小有限制
  • POST请求方式:有请求体,无大小限制

2.请求头:请求头为“key:value"的格式,即"请求头:请求头值"的形式。
请求头的值中会包含很多信息,包括浏览器版本,主机地址,数据格式等

常见的请求头的值

请求头名称请求头的值
Host请求的主机名
User-Agent浏览器版本
Accept表示浏览器能接收的资源类型
Accept-Language表示浏览器的偏好语言,服务器可以据此返回不同语言的网页
Accept-Encoding表示浏览器可以支持的压缩类型
Content-Type请求主体的数据类型
Content-Length请求主体的大小(单位:字节)

3.请求体:请求体是POST请求特有的一个组成部分,存放请求参数,请求数据

总结:Request请求数据格式内容框架如下:

Response Headers请求数据格式说明

响应数据格式大致分为三个部分:响应行,响应头,响应体

1.响应行:响应数据的第一行,包含协议,状态码,描述(可能省略)三个部分。

状态码的作用是告诉客户端本次响应的状态,常见状态码有

200,请求成功。201,已创建,成功请求并创建了新的资源。202,已接受,已接受请求,但未处理完成。301,永久重定向,请求的资源被永久移到新URL,今后任何新的请求都应使用新的URL代替。302,暂时重定向,资源只是临时被移动,客户端仍使用原有的URL。400,客户端请求的语法错误,服务器无法理解。401,请求要求用户的身份认证。(英文描述:OK)403,服务器理解客户端的请求,但是拒绝执行的请求。404,服务器无法根据客户端的请求找到资源。500,服务器内部错误,无法完成请求。501,服务器不支持请求的功能,无法完成请求。503,由于超载或系统维护,服务器暂时无法处理客户端的请求。

所有状态码及其详细信息可访问网站: 状态码大全

状态码分为5类,范围从100~500,状态码分类如下

1**:信息,服务器收到请求,需要请求者继续执行操作2**:成功,操作被成功接收并处理3**:重定向,需要进一步的操作以完成请求4**:客户端错误,请求包含语法错误或无法完成请求5**:服务器错误,服务器在处理请求的过程中发生了错误

2.响应头:同请求头一样,数据格式为“key:value"的格式,即"响应头:响应头值"的形式。

常见的响应头

响应头响应头的值
Content-Type表示响应内容的类型,例如txt/html,application/json。
Content-Length表示该响应内容的长度(字节数)
Content-Encoding表示该响应压缩算法,例如gzip
Cache-Control指示客户端如何缓存,例如max-age=300表示最多缓存300秒
Set-Cookie告诉浏览器为当前页面所在的域设置Cookie

3.响应体:响应数据格式的最后一行,存放响应数据,通常为CJSON格式

5.HTTP工作原理

在浏览器地址键入URL,工作流程如下:

    1. 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
    1. 解析出IP地址后,根据该IP地址和默认端口号80,与服务器建立TCP连接
    1. 浏览器发出HTTP请求给服务器
  • 4.服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器

    1. 释放TCP连接
    1. 浏览器将该html文本显示出来

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

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

相关文章

前端实现主题(深色模式)切换的几种方案

方案一:link 动态引入 通过改变link 标签的 href 属性实现动态修改样式(暂不推荐这种方案) 优点:实现了按需加载,提高了性能; 缺点:动态加载样式文件,可能会因为网络问题导致样式…

使用Scanner扫描器和if语句来判断QQ等级的活跃程度

一、主要特点 总体使用try包围起来,用到了Scanner扫描器,还用到了若干if语句。 二、运行代码 import java.util.Scanner; public class QQtest {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.pr…

torch 如何实现两点分布采样,100个样本中20个样本为1,80个为2

方法1 可以使用 PyTorch 中的 torch.distributions 模块实现两点分布采样。具体来说,可以使用 Categorical 分布将数字1和数字2的概率分别设为0.2和0.8,然后调用 sample() 方法进行采样。 下面是实现上述功能的代码示例: import torch # 创…

rename--统一的PRF

将ARF/PRF进行合并,合同之后的不见,称之为统一的PRF(Physical Register File);存储的是speculative的,以及正确的(retire)寄存器值;

【已解决】Qt mouseMoveEvent、mouseReleaseEvent失效无法触发

问题背景 我有一个派生自QGraphicsObject的类,这个类其实就是同时继承了QGraphicsItem和QObject的类 相当于在QGraphicsItem的基础上增加了事件消息的功能 我派生出来的这个类主要是实现了由多个点组成的多边形 现在想实现一个功能,拖动其中的某个点…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后,又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上,星纪魅族集团(下称“魅族”)董事长兼CEO沈子瑜宣布,魅族正式进入汽车市场,将在2024年第一季度启动“DreamCar共创…

promise使用示例

下面是一个 Promise 使用示例,通过 Promise 实现异步操作的链式调用: const getUser (userId) > {return new Promise((resolve, reject) > {// 模拟异步请求setTimeout(() > {const users [{ id: 1, name: Alice },{ id: 2, name: Bob },{ …

按需分发饼干

题意: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&#xff0c…

ChatGPT学习笔记

1 模型训练 ChatGPT在训练时使用了PPO方法;

【STM32】STM32学习笔记-课程简介(01)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

win10与 vm虚拟机win7共享文件夹创建

1:在win10(主机)电脑先随意共享一个文件夹 2:在win10(主机)上创建一个网络映射 右键此电脑选择映射网络驱动器 成功后会多出这个网络位置 3:win7虚拟机设置 在虚拟机中点击计算机右键添加一个网络位置

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…

安卓开发引入网络图片

<ImageViewandroid:id"id/img01"android:layout_width"match_parent"android:layout_height"200dp"android:layout_weight"1"/>ImageView加载网路图片 第一步&#xff1a;添加网络权限 <uses-permission android:name"…

vue使用实现录音功能js-audio-recorder

前言 最近项目中需要实现一个录音上传功能&#xff0c;用于语音评论可以上录音。 下载插件&#xff1a; npm i js-audio-recorder完整代码 <template><div style"padding: 20px;"><h3>录音上传</h3><div style"font-size:14px"…

“轻松管理视频文件:高效归类与统一重命名“

随着电子设备的普及&#xff0c;我们的视频文件可能来自各种不同的源头&#xff0c;如何高效地管理和查找这些文件成为了一个问题。今天&#xff0c;我们将为您提供一个完美的解决方案——自动归类并统一重命名视频文件。 首先&#xff0c;第一步&#xff0c;我们要进入文件批…

【Python百宝箱】优化 Python 中的科学计算与建模:从 SymPy 到 Optuna

掌握Python科学计算&#xff1a;符号运算、数值计算与模型优化 前言 本文将带您深入了解 Python 中一系列重要的科学计算与优化库。从 SymPy 提供的符号计算&#xff0c;到 scikit-optimize 的贝叶斯优化&#xff0c;再到 NumPy 和 SciPy 的数值计算和统计建模&#xff0c;以…

Unsupported class file major version xx

Java SE 和 Major Version 对应关系如下&#xff1a; Java SEMajor VersionHex18620x3E17610x3D16600x3C15590x3B14580x3A13570x3912560x3811550x3710540x369530x358520x347510x336.0500x325.0490x311.4480x301.3470x2F1.2460x2E1.1450x2D 修改对应SE和major关系可以解决如…

我一人全干!之vue3后台管理中的大屏展示。

使用大屏展示的时候有很多种场景&#xff0c;众多场景都是为了实现大屏自适应。 大屏&#xff0c;顾名思义&#xff0c;就是放在一个固定的屏幕上看的&#xff0c;即使你不做自适应&#xff0c;放在一个固定的屏幕上看也没啥问题&#xff0c;但是很多做大屏的是为了在PC端看&am…

Python中 长度判断与限制

#1.长度判断与限制 # "raise" 是一个 Python 中用于抛出异常的关键字这允许程序员在发生错误或不符合预期条件的情况下&#xff0c; # 提前终止程序的执行并给出相应的错误信息。 def ren(name: str, age: int):if len(name) > 3:raise ValueError("Name len…

【JAVA】Maven构建java-grpc-protobuf代码生成测试

本次是通过Maven工具构建Java测试工程&#xff0c;需要将原本通过gradle构建的项目需要通过maven构建加入公司代码库&#xff0c;通过Maven构建涉及到接下来要介绍的插件&#xff0c;总是发现pom.xml编译不通过&#xff0c;看到网上都是千篇一律的插件配置&#xff0c;自己就是…