前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-http的加密过程- 浏览器缓存

news2024/10/7 12:18:18

前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-如果ajax请求-http的加密过程

  • http和其他协议之间的区别
    • http和tcp之间的区别
    • http和websocket协议有什么区别
  • Ajax请求的步骤
  • 什么是XSS,CSRF攻击
  • https加密的过程
  • 浏览器缓存

http和其他协议之间的区别

我们常见的协议有 http协议,https协议,tcp协议,websocket协议

http和tcp之间的区别

主要体现在性质,连接状态和功能上。
首先,HTTP是一个简单的请求-响应协议,通常运行在TCP纸上。它指定了客户端肯呢个发送给服务器什么样的信息以及得到什么样的响应。而TCP则是一种面向连接的,可靠的,基于字节流的传输层通信协议。
其次,http是无状态的短连接,每次氢气结束后都会断开连接。而TCP是有状态的长连接,可以在不同计算机之间建立可靠的通信服务。
此外,当应用层向TCP层发送用于网间传输,用8位字节表示的数据流时,TCP会将数据流分割成适当长度的报文,并确保数据地可靠传输。
http是基于TCP的,客户端往服务端发送一个http请求时第一步就是要建立与服务端的Tcp连接,也就是先三次握手。从http1.1开始支持持久连接,也就是一次TCP连接可以发送多次的HTTP请求。

http和websocket协议有什么区别

HTTP是短连接,Socket(基于TCP协议的)是长连接。尽管HTTP1.1开始是支持持久连接,但仍无法保证始终连接。而Socket连接一旦建立TCP三次握手,除非一方主动断开,否则连接状态一直保持。
HTTP连接服务端无法主动发送信息,Socket连接双份请求的发送先后限制。这点比较重要,因为它将决定二者分别适用在什么场景之下。HTTP采用请求-响应机制,在客户端还没发送消息给服务端前,服务端无法推送消息给客户端。必须满足客户端发送消息在前,服务端回复消息在后。socket连接双方类似p2p的关系,一方随时可以向另一方喊话。
用http的情况:双方不需要时刻保持连接在线,比如客户端资源的获取,文件上传等。
用socket的情况:打部分即使通讯应用。

以下代码用node.js搭建简单的websocket服务
服务端:

var ws=require("nodejs-websocket")

const PORT=5001
let myotherdata={
    id:1,
    name:'hhh',
    test:'我是哈哈'
}
var serve=ws.createServer((conn)=>{
    console.log('连接成功')
    conn.send('恭喜你 你已经成功和我建立连接了')
    mywebsocket(conn)
    conn.on("error",()=>{
        console.log('error')
    })
    conn.on('close',()=>{
        console.log('连接关闭')
    })
    conn.on('text',(data)=>{
        console.log('收到了来自客户端的数据',data)
        conn.send(`我是服务端给你说的东西啦,${data},${myotherdata.name}`)
    })
})
var mywebsocket=function (e){
    let i=1;
    setInterval(()=>{
        e.send(`是服务端第${i}次给你发送消息`)
        i++
    },6000)

}

serve.listen(PORT,()=>{
    console.log('服务器启动成功,监听了端口'+PORT)
})

客户端:

     let mysocket
        mysocket = new WebSocket("ws://127.0.0.1:5001");
        mysocket.addEventListener("open", () => {
            console.log('连接成功')
        })
        mysocket.addEventListener('message', (e) => {
            console.log(e.data)
        })

Ajax请求的步骤

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种网页开发技术。AJAX使用JavaScript、XMLHttpRequest对象以及一些其他相关技术,使得网页能够在不需要重新加载整个页面的情况下,与服务器进行通信并更新部分网页内容。这使得网页可以更加动态和响应式,提高用户体验。
AJAX基于web标准(standards-based presentation)XHTML+CSS的表示,使用DOM(Document Object Model)进行动态显示及交互,使用XML和XSLT进行数据交换及相关操作,使用XMLHttpRequest进行异步数据查询、检索,以及使用JavaScript将所有的东西绑定在一起。
值得注意的是,AJAX并不是一种单一的技术,而是多种技术的有机组合。这些技术协同工作,使得网页能够更快速、更有效地响应用户的交互行为。
Ajax请求的步骤
1.首先创建一个XMLHttpRequest异步对象
2.然后设置请求方式和请求地址
3.用send发送请求
4.监听状态变化
代码如下:

// 创建XMLHttpRequest对象  
var xhr = new XMLHttpRequest();  
  
// 打开一个请求到指定的URL,使用GET方法,并设置是否异步处理请求  
xhr.open("GET", "API地址", true);  
  
// 注册一个事件处理程序来处理服务器响应  
xhr.onreadystatechange = function() {  
  if (xhr.readyState === 4 && xhr.status === 200) {  
    // 服务器响应状态码为200,表示请求成功  
    // 使用responseText属性获取服务器响应的文本内容  
    var response = xhr.responseText;  
    // 在这里处理服务器响应数据  
    console.log(response);  
  } else if (xhr.readyState === 4) {  
    // 请求完成,但服务器响应状态码不是200  
    // 在这里处理请求失败的情况  
    console.error("请求失败");  
  }  
};  
  
// 发送请求到服务器  
xhr.send();

什么是XSS,CSRF攻击

CSRF(跨站请求伪造)是一种挟持用户当前以及登录的web应用程序上执行非本意操作的攻击方法。
XSS(跨站脚本),指的是通过利用网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意的网页程序。常见的列如在评论区植入JS代码,用户进入评论网页代码被执行,造成页面被植入广告,账户信息被窃取等。
如何防御CSRF攻击
1.验证token:浏览器请求服务器时,服务器随机返回一个token,每个请求都需要带上token和cookie才会被认为是合法的请求
2.验证referer:通过验证请求头的referer来躺着来源站点,但是请求头很容易伪造。
3.设置SameSite:设置cookie的SameSite,可以让cookie不随跨域请求发出,但浏览器兼容不一。
如何防御XSS攻击
1.输入检查:对输入内容中改的一些特殊标签进行转义或者过滤
2.设置HttpOnly:设置此属性可以防止js获取cookie
3.开启CSP:开启白名单,可组织白名单意外的资源运行和加载

https加密的过程

1.客户端向服务器发送“client hello”消息,同时包含TLS版本、可用加密算法和压缩算法。
2.服务器向客户端返回“server hello”消息,其中包含服务器选择的TLS版本、加密算法和压缩算法,以及服务器公钥。
3.客户端验证CA是否可信,并验证服务器证书是否过期,域名是否匹配等。验证通过后,客户端生成一串随机数,并使用服务器公钥进行加密。
4.服务器用自己的私钥解密得到随机数,并使用该随机数生成对称密钥。
5.服务器使用对称密钥加密数据发送给客户端。
6.客户端使用相同的对称密钥解密数据。

浏览器缓存

浏览器缓存分为强制缓存和协商缓存
强制缓存:文件直接从本地缓存中获取,不需要发送请求
在这里插入图片描述
上图为初次请求 浏览器请求服务器 服务器返回资源 给浏览器浏览器本地存储就有了一份资源(cache-control )
在这里插入图片描述

从上图中可以看到,此时浏览器已经接收到 cache-control 的值,那么这个时候浏览器再次发送请求
时,它会先检查它的 cache-control 是否过期,如果没有过期则直接从本地缓存中拉取资源,返回到
客户端,而无需再经过服务。

协商缓存: 也叫做对比缓存
是一种服务端的缓存策略,即通过服务端来判断某件事情是不是可以被缓存。
服务端判断客户端的资源,是否和服务端资源一样,如果一致返回304,反之返回200和最新的资源
在这里插入图片描述

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

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

相关文章

BUGKU-WEB Simple_SSTI_1

02 Simple_SSTI_1 题目描述 没啥好说的~ 解题思路 进入场景后&#xff0c;显示&#xff1a; You need pass in a parameter named flag。ctrlu 查看源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

函数对象(仿函数)的相关基本概念及用法

函数对象&#xff08;仿函数&#xff09; 基本概念 重载函数调用操作符的类&#xff0c;其对象称为函数对象 函数对象使用重载的&#xff08;&#xff09;时&#xff0c;行为类似函数调用&#xff0c;因此也被称为仿函数 本质 函数对象&#xff08;仿函数&#xff09;是一…

机器学习本科课程 大作业 多元时间序列预测

1. 问题描述 1.1 阐述问题 对某电力部门的二氧化碳排放量进行回归预测&#xff0c;有如下要求 数据时间跨度从1973年1月到2021年12月&#xff0c;按月份记录。数据集包括“煤电”&#xff0c;“天然气”&#xff0c;“馏分燃料”等共9个指标的数据&#xff08;其中早期的部分…

yarn/npm certificate has expired

目录 报错 原因&#xff1a;HTTPS 证书验证失败 方法 a.检查网络安全软件&#xff1a;可能会拦截或修改 HTTPS 流量 b.strict-ssl:false关闭验证【临时方法】 报错 info No lockfile found. [1/4] Resolving packages... error Error: certificate has expired at TLS…

【华三】GRE VPN 实验配置

【华三】GRE VPN 实验配置 前言报文格式实验需求配置思路配置拓扑GRE配置步骤R1基础配置GRE 配置ISP_R2基础配置R3基础配置GRE 配置PCPC1PC2抓包检查OSPF建立GRE隧道建立配置文档前言 VPN :(Virtual Private Network),即“虚拟专用网络”。 它是一种通过公用网络(通常是互…

骨传导耳机是什么原理?适合什么场景使用?

骨传导耳机是一种非常特殊的蓝牙耳机&#xff0c;它们通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机&#xff0c;它不通过空气传送声音&#xff0c;而是通过头骨的振动来传送声音。 骨传导耳机的传声原理跟传统耳机有所不同&#xff0c;传统耳机通过空气振动将…

爱上算法:每日算法(24-2月2号)

&#x1f31f;坚持每日刷算法&#xff0c;将其变为习惯&#x1f91b; 题目链接&#xff1a;101. 对称二叉树 最开始肯定是比较简单的想法&#xff0c;就是遍历左右节点呀&#xff0c;不相等我就直接返回false。 但是这样错了&#xff0c;我们要的是以根节点为轴&#xff0c;而…

使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队

作者&#xff1a;来自 Jessica Garson 大约一年前&#xff0c;我经历了一段压力很大的时期&#xff0c;最后参加了一场篮球比赛。 在整个过程中&#xff0c;我可以以一种我以前无法做到的方式断开连接并找到焦点。 我加入的第一支球队是波士顿凯尔特人队。 波士顿凯尔特人队是…

【Linux】文件周边002之初步理解文件管理(打开的文件)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.&#xff08;打开…

PMP资料怎么学?PMP备考经验分享

PMP考试前大家大多都是提前备考个一两个月&#xff0c;但是有些朋友喜欢“不走寻常路”&#xff0c;并不打算去考PMP认证&#xff0c;想要单纯了解PMP&#xff0c;不管要不要考证&#xff0c;即使是仅仅学习了解一下我个人都非常支持&#xff0c;因为专业的基础的确能提高工作效…

【Linux系统 02】Shell脚本

目录 一、Shell概述 二、输入输出 三、分支控制 1. 表达式 2. if 分支 3. case 分支 四、循环控制 1. for 循环 2. while 循环 3. select 循环 五、函数 一、Shell概述 Shell是Linux系统连接用户和操作系统的外壳程序&#xff0c;将用户的输入和请求选择性传递给操…

Unity笔记:相机移动

基础知识 鼠标输入 在Unity中&#xff0c;开发者在“Edit” > “Project Settings” > “Input Manager”中设置输入&#xff0c;如下图所示&#xff1a; 在设置了Mouse X后&#xff0c;Input.GetAxis("Mouse X")返回的是鼠标在X轴上的增量值。这意味着它会…

考勤|基于Springboot的大学生考勤系统设计与实现(源码+数据库+文档)

大学生考勤系统目录 目录 基于Springboot的大学生考勤系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、系统登录注册 2、管理员功能模块 3、教师功能模块 4、学生功能模块 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码…

【CSS + ElementUI】更改 el-carousel 指示器样式且隐藏左右箭头

需求 前三条数据以走马灯形式展现&#xff0c;指示器 hover 时可以切换到对应内容 实现 <template><div v-loading"latestLoading"><div class"upload-first" v-show"latestThreeList.length > 0"><el-carousel ind…

@所有人 您需要的 幻兽帕鲁服务器搭建教程 已上线

所有人 您需要的 幻兽帕鲁服务器搭建教程 已上线 幻兽帕鲁一键购买及部署体验购买及部署购买云服务器ECS部署幻兽帕鲁 创建账户并登录Steam其他操作更新服务器修改游戏参数其他操作释放资源 一直拖到今天才来写这篇幻兽帕鲁服务器搭建教程&#xff0c;确实是因为前段时间有事耽…

【Rust】——rust前言与安装rust

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

机器学习系列5-特征组合、简化正则化

1.特征组合 1.1特征组合&#xff1a;编码非线性规律 我们做出如下假设&#xff1a;蓝点代表生病的树。橙色的点代表健康的树。 您可以绘制一条直线将生病的树与健康的树清晰地分开吗&#xff1f;不可以。这是一个非线性问题。您绘制的任何线条都无法很好地预测树的健康状况…

R语言学习case12:ggplot 置信区间(多线型)

接上文&#xff1a;多条曲线 R语言学习case11&#xff1a;ggplot 置信区间&#xff08;包含多子图&#xff09; 在ggplot2中&#xff0c;每个geom函数都接受一个映射参数。然而&#xff0c;并非每个美学属性都适用于每个geom。你可以设置点的形状&#xff0c;但不能设置线的“…

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…

产品经理学习-产品运营《如何策划一场活动》

互联网活动怎么玩 最常听到的有&#xff1a; 注册有奖、拉新有奖 签到积分 秒杀、大促、神券 和过去相比&#xff0c;现在活动的特征变化&#xff1a; 线上化、形式丰富、覆盖人群广、即时性、效果可控 什么是活动运营 通过策划不同形式的活动&#xff0c;进行有效的资源和…