HTTP相关问题

目录

1.从输入URL到页面展示到底发生了什么?

2.HTTP状态码有哪些?

2.1 2XX(成功状态码)

2.2 3XX(重定向状态码)

2.3 4XX(客户端错误状态码)

2.4 5XX(服务端错误状态码)

3.HTTP 请求头中常见的字段有哪些?

4.HTTP和HTTPS有什么区别?

4.1简单介绍

4.2主要区别

4.3Https的缺点

5.HTTP1.0和HTTP1.1的区别

6.HTTP1.1和HTTP2.0有什么区别

7.HTTP2.0和HTTP3.0有什么区别?

8.URI和URL的区别是什么?

9.Cookie和Session的区别?

10.GET和POST的区别?

1.从输入URL到页面展示到底发生了什么?

  1. 首先,浏览器会根据我们输入的URL地址先在本地域名服务器(DNS)中查找,如果有缓存,则直接返回IP地址即可。

  2. 如果本地域名服务器没有缓存,则会查询本机hosts文件中看是否配有对应的IP地址,如果找到,直接返回。

  3. 如果hosts文件内也没有,则向网络中发起一个DNS查询,可采用递归或者迭代查询。去根、顶级、权威域名服务器上去查.....,查找到了返回给本地域名服务器,然后告诉给用户IP地址。

  4. 浏览器根据IP地址和端口号与目标服务器建立TCP连接,经历三次握手。

  5. 建立连接后(HTTP1.1为长连接),浏览器向服务器发送一个HTTP请求,请求获取网页的内容。

  6. 服务器收到后,处理请求,返回响应报文。

  7. 浏览器接收到后,解析HTML代码,获取里面的其他资源,图片等,再次发起HTTP请求,直到网页完全加载显示。

  8. 浏览器不需要通信时,可主动关闭TCP连接,或者等待服务器关闭请求。

2.HTTP状态码有哪些?

2.1 2XX(成功状态码)

  • 200 OK:请求被成功处理。比如我们发送一个查询用户数据的 HTTP 请求到服务端,服务端正确返回了用户数据。这个是我们平时最常见的一个 HTTP 状态码。

  • 201 Created:请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。

  • 202 Accepted:服务端已经接收到了请求,但是还未处理。

  • 204 No Content:服务端已经成功处理了请求,但是没有返回任何内容。

2.2 3XX(重定向状态码)

  • 301 Moved Permanently:资源被永久重定向了。比如你的网站的网址更换了。

  • 302 Found:资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。

2.3 4XX(客户端错误状态码)

  • 400 Bad Request:发送的 HTTP 请求存在问题。比如请求参数不合法、请求方法错误。

  • 401 Unauthorized:未认证却请求需要认证之后才能访问的资源。

  • 403 Forbidden:直接拒绝 HTTP 请求,不处理。一般用来针对非法请求。

  • 404 Not Found:你请求的资源未在服务端找到。比如你请求某个用户的信息,服务端并没有找到指定的用户。

  • 409 Conflict:表示请求的资源与服务端当前的状态存在冲突,请求无法被处理。

2.4 5XX(服务端错误状态码)

  • 500 Internal Server Error:服务端出问题了。比如你服务端处理请求的时候突然抛出异常,但是异常并未在服务端被正确处理。

  • 502 Bad Gateway:我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。

3.HTTP 请求头中常见的字段有哪些?

字段含义
Request URL请求地址
Request Method请求方法
status Code请求码
Reomte Address客户端主机的IP地址
Date发送日期
User-Agent浏览器身份标识字符串
Accept-Encoding支持的编码
Accept-Language支持的语言
scheme访问协议http或https

4.HTTP和HTTPS有什么区别?

4.1简单介绍

HTTP:最广泛应用的网络通信协议,基于TCP协议,数据传输简单高效,数据传输的内容是明文

HTTPS:HTTP协议的加强版,是运行在SSL/TLS协议之上的HTTP协议,其所有传输的内容都经过加密,一方面保证数据的安全传输,另一方面对访问者增加了安全验证

注意:TLS是SSL的升级版,加密采用的是对称加密,通信双方共享唯一密钥K,这样代价比较低。由于需要保证密钥的保密性,在双方通信时,需要商量一个用于对称加密的密钥,但是密钥不能直接在网络通信道中传输,这样是不安全的,所以还需要采用一次非对称加密(公钥加密和私钥解密的方式)用来交换对称加密的密钥。关于密钥的信任性问题是靠CA证书解决的。

4.2主要区别

1.http和https都是无状态(就是交互之间没有记忆功能)的,而https是通过SSL/TLS协议加密的,传输数据更加的安全。

2.http默认使用的是80端口,而https默认使用的是443端口。

4.3Https的缺点

1.https的TCP握手协议会更加的费时,会耗费更多服务器资源。

2.https也并不是完全安全的,可能会受到DDOS(分布式拒绝服务攻击,使被攻击的网站服务器存放大量要响应的信息,消耗资源,使得服务瘫痪)的攻击。

3.SSL证书不是免费的,安全级别越高的费用越高。

5.HTTP1.0和HTTP1.1的区别

  • 连接方式:HTTP1.0为短连接,HTTP1.1支持长连接。

  • Host头:因为DNS允许多个主机名绑定到同一个IP地址,加上Host字段就知道主机名了。

  • 响应状态码:HTTP1.1在HTTP1.0的基础上新加入了大量的状态码。

  • 加密:HTTP1.1可以支持SSL/TLS加密。

6.HTTP1.1和HTTP2.0有什么区别

  • 多路复用:HTTP2.0在同一连接上可以同时传输多个请求和响应,在处理多个请求时更加的高效。

  • 服务主动推送:HTTP2.0可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,减少了客户端的请求次数。

  • 二进制帧:HTTP2.0使用二进制帧进行数据传输,相较于HTTP1.1文本格式的报文更加的高效。

注意:HTTP1.1和HTTP2.0都与HTTPS有直接关系。HTTP1.1和HTTP2.0都是HTTP协议的版本,而HTTPS是在HTTP协议的基础上加入了SSL/TLS协议进行加密的协议。因此,当使用HTTPS时,实际上是在使用HTTP协议(无论是HTTP1.1还是HTTP2.0)进行加密通信。具体来说,HTTP1.1和HTTP2.0可以与HTTPS一起使用,以提供加密和安全通信。在实际应用中,许多网站使用HTTPS来保护用户的个人信息和其他敏感数据,而HTTP1.1和HTTP2.0都可以作为HTTPS协议的一部分来使用。

7.HTTP2.0和HTTP3.0有什么区别?

  • 传输协议:HTTP2.0是基于TCP协议实现的,HTTP3.0采用了QUIC(UDP的升级版,在其基础上新增了加密、重传等功能)协议来实现可靠的传输。

  • 安全性:HTTP2.0使用TSL协议进行加密,而HTTP3.0基于QUIC协议,包含了内置的加密和身份验证机制,可以提供更强的安全性。

  • 连接建立和错误恢复:HTTP3.0相较于HTTP2.0在连接建立上更快,也有更好的错误恢复机制。

 

8.URI和URL的区别是什么?

  • URI是统一资源标识符,可以唯一标识一个资源,比如一张图片,一段音频。

  • URL是统一资源定位符,可以提供该资源的路径,就是如何指向这个资源。

URI准确来说是包含URL的,比如说有一张图片,他同时放在了tomcat服务器中的两个不同文件夹中,对于URI来说就是一张图片资源,而URL可以有多个,访问的文件夹路径不同,URL不同,但最终得到的就是这一张图片资源。

9.Cookie和Session的区别?

        因为我学习的时候接触的是JWT,没有采用Cookie+Session这种方案,对Cookie和Session的过程只是了解。因为HTTP协议是无状态的,Session的主要作用就是通过服务端记录用户的状态,Session是在服务端的,Cookie是在客户端的,所以Cookie中不能存储敏感信息,最好是将Cookie信息加密存储然后使用到的时候再去服务器端解密。

        基本认证流程如下:

10.GET和POST的区别?

  • 使用场景:get请求一般用于获取或查询资源,而post请求一般用于创建和修改资源。

  • 缓存:浏览器一般会对get请求进行缓存,而post请求不会缓存。

  • 安全性:如果使用HTTP协议的话,其实都不安全,因为HTTP协议本身是明文传输。但相对来说POST请求比GET请求更安全一些,因为GET请求的参数通常放在URL中。

  • 格式:GET请求的URL长度受到浏览器和服务器的限制,而POST请求的body大小没有明确的限制。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[C++] 如何使用Visual Studio 2022 + QT6创建桌面应用

安装Visual Studio 2022和C环境 [Visual Studio] 基础教程 - Window10下如何安装VS 2022社区版_visual studio 2022 社区版-CSDN博客 安装QT6开源版 下载开源版本QT Try Qt | 开发应用程序和嵌入式系统 | Qt Open Source Development | Open Source License | Qt 下载完成&…

AI人工智能怎么自动抠图去除背景

抠图在许多场合中都发挥着重要的作用,它可以帮助我们去除图片的背景,从而将图片转换成透明底色,方便我们为图片更换其他的背景。为了实现照片去除背景只提取人物,我们需要使用专业的图片处理工具,并进行一系列的操作。…

算法效率的度量-时间空间复杂度

常对幂指阶 1.时间复杂度 事前预估 算法 时间开销 T(n) 与 问题规模 n 的关系( T 表示 “ time ”) 一般默认问题规模为n。 1.单循环 2.嵌套两层循环都为n 3.单层循环指数递增型 4.搜索型 链接 :第七章查找算法!&#xff01…

elementUI 表格中如何合并动态数据的单元格

elementUI 表格中如何合并动态数据的单元格 ui中提供的案例是固定写法无法满足 实际开发需求 下面进行改造如下 准备数据如下 //在表格中 设置单元格的方法 :span-method"spanMethodFun" <el-table :data"tableData" border :span-method"spa…

2024第八届生物饲料高质量发展论坛会议通知

饲料工业发展空间大&#xff0c;产量持续增长&#xff0c;品质与质量也在不断提高&#xff0c;饲料工业是支撑现代畜牧水产养殖业发展的基础产业&#xff0c;是关系到城乡居民动物性食品供应的民生产业。“十四五”时期是我国由全面建设小康社会向基本实现社会主义现代化迈进的…

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】

文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等&#xff0c;二维DP&#xff0c;可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质…

性能测试工具LoadRunner与登录性能测试分析

1. LoadRunner与Jmeter Jmeter是开源免费的&#xff0c;LoadRunner是商业收费的。 但是LoadRunner具有非常强大的录制功能&#xff0c;具有丰富且灵活的场景&#xff0c;具备丰富的报告性能。 1&#xff09;Jmeter没有录制功能 2&#xff09;LoadRunner可以设计非常丰富的测试…

构造回文数组

目录 原题描述&#xff1a; 题目描述 时间&#xff1a;1s 空间&#xff1a;256M 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 样例1输入&#xff1a; 样例1输出&#xff1a; 样例2输入&#xff1a; 样例2输出&#xff1a; 约定&#xff1a; 作…

JVM 性能调优 - JVM 参数基础(2)

查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …

CSS:三列布局

三列布局是指左右两列定宽&#xff0c;中间自适应。最终效果如下&#xff1a; HTML&#xff1a; <div class"container"><div class"left"></div><div class"center"></div><div class"right">…

javaEE - 23( 21000 字 Servlet 入门 -1 )

一&#xff1a;Servlet 1.1 Servlet 是什么 Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app. 构建动态页面的技术有很多, 每种语言都有一些相关的库/框架来做这件事&#xff0c;Servlet 就是 Tomcat 这个 HTTP…

404. Sum of Left Leaves(左叶子之和)

问题描述 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 问题分析 我们可以查看如果一个叶子是左叶子就加上其值然后返回&#xff0c;如果是右叶子则不用关。 代码 int sumOfLeftLeaves(struct TreeNode* root) {int sum 0;if(root!NULL){if(root->left!…

板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 来自【汤米尼克的JAVAEE全套教程专栏】

板块零 IDEA编译器基础&#xff1a;第二节 创建JAVA WEB项目与IDEA基本设置 一、创建JAVA WEB项目&#xff08;1&#xff09;普通项目升级成WEB项目&#xff08;2&#xff09;创建JAVA包 二、IDEA 开荒基本设置&#xff08;1&#xff09;设置字体字号自动缩放 &#xff08;2&am…

安全SCDN有什么作用

当前网络安全形势日益严峻&#xff0c;网络攻击事件频发&#xff0c;攻击手段不断升级&#xff0c;给企业和个人带来了严重的安全威胁。在这种背景下&#xff0c;安全SCDN作为一种网络安全解决方案&#xff0c;受到了广泛的关注。那么&#xff0c;安全SCDN真的可以应对网络攻击…

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答&#xff08;接收请求&#xff08;文件、数据&#xff09;flask请求&#xff08;上传文件&#xff09;传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …

基于OpenCV灰度图像转GCode的斜向扫描实现

基于OpenCV灰度图像转GCode的斜向扫描实现基于OpenCV灰度图像转GCode的斜向扫描实现 引言激光雕刻简介OpenCV简介实现步骤 1.导入必要的库2. 读取灰度图像3. 图像预处理4. 生成GCode5. 保存生成的GCode6. 灰度图像斜向扫描代码示例 总结 系列文章 ⭐深入理解G0和G1指令&…

003集—三调数据库添加三大类字段——arcgis

在国土管理日常统计工作中经常需要用到三大类数据&#xff08;农用地、建设用地、未利用地&#xff09;&#xff0c;而三调数据库中无三大类字段&#xff0c;因此需要手工录入三大类字段&#xff0c;并根据二级地类代码录入相关三大类名称。本代码可一键录入海量三大类名称统计…

Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的企业财务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业财务管理系统&#xff0c;采用M&#xff08;model&…

想提升测试效率?Ant来帮你

Ant的安装和配置 Apache Ant,是一款将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发 设置ant环境变量: a) ant包名称为:apache-ant-1.9.6-bin.zip b) 解压到一个目录下面:unzip apache-ant-1.9.6-bin.zip c) 比如放到:/op…

Netty核心原理与基础实战(二)——详解Bootstrap

接上篇&#xff1a;Netty核心原理与基础实战&#xff08;一&#xff09; 1 Bootstrap基础概念 Bootstrap类是Netty提供的一个便利的工厂类&#xff0c;可以通过它来完成Netty的客户端或服务端的Netty组件的组装&#xff0c;以及Netty程序的初始化和启动执行。Netty的官方解释是…