前端网络相关的面试题

get和post经过几次tcp连接?

HTTP的GET和POST请求都是基于TCP协议的,因此在发送请求之前都需要建立TCP连接。TCP连接的建立通常被称为三次握手(Three-way Handshake)。

第一次握手:客户端发送一个SYN包(同步序列编号)到服务器,等待服务器确认。这时,客户端处于SYN_SENT状态。

第二次握手:服务器收到SYN包后,会以一个SYN+ACK包作为应答,确认客户端的SYN包同时也向客户端发送SYN请求。这时,服务器处于SYN_RCVD状态。

第三次握手:客户端收到服务器的SYN+ACK包后,会发送一个ACK包给服务器,确认服务器的SYN请求。这时,客户端处于ESTABLISHED状态。

在这个过程完成后,客户端和服务器就建立了TCP连接,可以开始进行数据传输。所以无论是GET还是POST请求,都至少需要经过一次完整的TCP连接过程。然后在数据传输完成后,还需要通过四次挥手(Four-way Handshake)来关闭TCP连接。

需要注意的是,HTTP/1.1版本开始默认开启了持久连接(Persistent Connection),也就是说在一个TCP连接上可以发送多个HTTP请求,不需要每次请求都重新建立TCP连接。

tcp连接然后怎么区分两个请求?

在一个TCP连接中,可以发送多个HTTP请求,这是通过HTTP消息的格式来实现的。每个HTTP请求和响应都是由一系列的头部和一个可选的体部组成,头部和体部之间由一个空行分隔。

HTTP请求的头部包含了请求的方法(如GET或POST)、请求的URI和HTTP版本。响应的头部则包含了HTTP版本、状态码和状态消息。头部还可以包含其他的字段,如Content-Type、Content-Length等,这些字段可以提供关于体部内容的信息。

当服务器收到一个HTTP请求后,它会解析请求的头部,根据头部的信息来处理请求的体部(如果存在的话)。然后,服务器会发送一个HTTP响应,响应的头部包含了处理请求的结果,响应的体部则包含了请求的结果。

因此,即使在一个TCP连接中发送了多个HTTP请求,服务器也可以通过解析每个请求的头部来区分和处理这些请求。同样,客户端也可以通过解析每个响应的头部来区分和处理这些响应。

此外,HTTP/1.1版本引入了管道化(pipelining)机制,允许客户端在收到上一个响应之前就发送下一个请求。这可以进一步提高HTTP的性能,但也需要服务器能够正确地处理和响应这些并发的请求。

cookies怎么跨域?

Cookie跨域主要涉及到两个概念:同源策略和跨域资源共享(CORS)。

同源策略:出于安全考虑,浏览器会限制一个网页中的脚本与其他源(协议、域名、端口)的交互。这就是所谓的同源策略。在同源策略下,Cookie、LocalStorage、IndexedDB等各种浏览器的存储技术都无法读取其他源的数据。

跨域资源共享(CORS):CORS是一种浏览器和服务器交互的方式,可以让服务器允许来自其他源的请求。在CORS中,服务器可以在响应头中设置Access-Control-Allow-Origin字段,指定哪些源可以访问该服务器的资源。

对于Cookie的跨域,需要满足以下条件:
请求方设置withCredentials为true。这是一个XMLHttpRequest对象的属性,表示是否允许发送Cookie。默认情况下,跨域请求不会发送Cookie,除非设置了这个属性。

响应方设置Access-Control-Allow-Origin为请求方的源,并且不能使用通配符*。这是因为浏览器不允许在发送Cookie时使用通配符。

响应方设置Access-Control-Allow-Credentials为true。这表示服务器允许接收Cookie。

满足以上条件后,就可以在跨域请求中发送和接收Cookie了。但需要注意的是,这种方式只能实现单个源的跨域,如果需要实现多个源的跨域,服务器需要动态地设置Access-Control-Allow-Origin字段。

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

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

相关文章

【python爬虫】8.温故而知新

文章目录 前言回顾前路代码实现体验代码功能拆解获取数据解析提取数据存储数据 程序实现与总结 前言 Hello又见面了!上一关我们学习了爬虫数据的存储,并成功将QQ音乐周杰伦歌曲信息的数据存储进了csv文件和excel文件。 学到这里,说明你已经…

nvm集合node版本,解决新版本jeecgboot3.5.3前端启动失败问题

jeecgboot前端3.5.3页面如下 使用之前的pnpm启动会报错,pnpm是node进行安装的,查询后发现,vue3版本的页面至少需要node16版本,我之前的版本只有15.5,适用于vue2 那么我将先前的node15.5版本删除,然后安装…

【Hadoop】DataNode 详解

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…

Redis——》实现分布式锁

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

【解决】idea启动spring MVC报错:一个或多个listeners启动失败Listener ClassNotFoundException

idea配置教程。tomcat调试报错Artifact :war exploded: Error during artifact deployment。 修改代码后,启动不生效,仍是旧代码。 根本原因是: Modules output path和Artifacts output directory不匹配 Modules output path一定要等于Ar…

网络编程 day 5

1、根据select TCP服务器流程图编写服务器 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.…

Uniapp中vuex的使用

vuex的学习笔记&#xff0c;很多地方还都不是很懂&#xff0c;先记下来再说&#xff0c;比小程序里自带的store复杂很多&#xff0c;看着头大&#xff0c;而且方法里面很多ES6的内容&#xff0c;头都看到爆炸 一、初始化vuex 新建store.js&#xff0c;挂载到main.js 1、在根…

Flink SQL你用了吗?

分析&回答 Flink 1.1.0&#xff1a;第一次引入 SQL 模块&#xff0c;并且提供 TableAPI&#xff0c;当然&#xff0c;这时候的功能还非常有限。Flink 1.3.0&#xff1a;在 Streaming SQL 上支持了 Retractions&#xff0c;显著提高了 Streaming SQL 的易用性&#xff0c;使…

前端性能优化

前言 性能优化这个问题&#xff0c;在面试的过程中问道的概率还挺大的&#xff0c;特别是对有前端开发经验的面试者来说&#xff0c;基本会被面试官问道关于性能优化的问题。但是在我们做项目的过程中&#xff0c;可能业务比较简单&#xff0c;并没有复杂到需要专门去优化的程…

c#接口(interface)

概述&#xff1a; 在C#中&#xff0c;接口是一种定义了一组相关方法、属性和事件的规范。接口可以被类或结构体实现&#xff0c;以提供一种方式来定义类之间的契约或协议。 接口定义了一组成员&#xff0c;这些成员没有具体的实现。实现接口的类必须提供这些成员的具体实现。…

linuxdeploy安装CentOS7搭建django服务

目录 一、busybox安装 二、linuxdeploy安装 三、linuxdeploy软件设置及安装 四、CentOS基础环境配置 五、CentOS7 上安装Python3.8.10 六、systemctl的替代品 七、CentOS7 上安装mysql5.2.27数据库 八、CentOS7 上安装Nginx服务 九、Django项目应用部署 参考文献: 一…

《Python入门到精通》webbrowser模块详解,Python webbrowser标准库,Python浏览器控制工具

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 webbrowser模块详解 1、常用操作2、函数大全webbrowser.open() 打开浏览器webbro…

线程同步与互斥

目录 前言&#xff1a;基于多线程不安全并行抢票 一、线程互斥锁 mutex 1.1 加锁解锁处理多线程并发 1.2 如何看待锁 1.3 如何理解加锁解锁的本质 1.4 CRAII方格设计封装锁 前言&#xff1a;基于线程安全的不合理竞争资源 二、线程同步 1.1 线程同步处理抢票 1.2 如何…

Python爬虫(十七)_糗事百科案例

糗事百科实例 爬取糗事百科段子&#xff0c;假设页面的URL是: http://www.qiushibaike.com/8hr/page/1 要求&#xff1a; 使用requests获取页面信息&#xff0c;用XPath/re做数据提取获取每个帖子里的用户头像连接、用户姓名、段子内容、点赞次数和评论次数保存到json文件内…

实现不同局域网文件共享的解决方案:使用Python自带HTTP服务和端口映射

文章目录 1. 前言2. 本地文件服务器搭建2.1 python的安装和设置2.2 cpolar的安装和注册 3. 本地文件服务器的发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有广泛的应用…

2023.8.26-2023.9.3 周报【3D+GAN+Diffusion基础知识+训练测试】

目录 学习目标 学习内容 学习时间 学习产出 学习目标 1. 3D方向的基础知识 2. 图像生成的基础知识&#xff08;GAN \ Diffusion&#xff09; 3. 训练测试GAN和Diffusion 学习内容 1. 斯坦福cv课程-3D &#xff08;网课含PPT&#xff09; 2. sjtu生成模型课件 3. ge…

TCP--半连接队列和全连接队列

原文地址&#xff1a;https://plantegg.github.io/2020/04/07/%E5%B0%B1%E6%98%AF%E8%A6%81%E4%BD%A0%E6%87%82TCP–%E5%8D%8A%E8%BF%9E%E6%8E%A5%E9%98%9F%E5%88%97%E5%92%8C%E5%85%A8%E8%BF%9E%E6%8E%A5%E9%98%9F%E5%88%97–%E9%98%BF%E9%87%8C%E6%8A%80%E6%9C%AF%E5%85%AC%E…

【OpenCL基础 · 一】因源

文章目录 前言一、单核标量处理器的瓶颈1.提升时钟频率2.提升指令级并行能力 二、多核和向量化1.多核2.向量化 三、异构并行和OpenCL1.GPGPU2.CUDA和OpenCL 前言 随着人工智能的发展以及大部分场景中实时性的要求&#xff0c;人们对于计算机算力要求逐渐增加。为了提高计算速度…

网络性能的四大指标:带宽、时延、抖动、丢包

原文链接&#xff1a;https://www.eet-china.com/mp/a82420.html 怎么去描述网络性能的好坏&#xff1f; 你如果说这个网络很好&#xff0c;那里的网络有点差&#xff01;这无异于看这风景美如画,本想吟诗赠天下,怎奈自己没文化,只能卧槽浪好大。 我们得用专业的术语去描述它…

【ES】笔记-Promise基本使用

笔记-基本使用 一、初始Promise1. 抽象表达:2. 具体表达:为什么要用 Promise?promise的基本流程 二、fs读取文件三、AJAX请求四、Promise封装fs模块五、util.promisify方法六、Promise封装AJAX操作 一、初始Promise 1. 抽象表达: 1. Promise 是一门新的技术(ES6 规范) 2. Pr…