1、GET和POST定义说道GET和POST,就不得不提HTTP协议,因为浏览器和服务器的交互是通过,我来为大家科普一下关于面试题网络请求的过程?下面希望有你要的答案,我们一起来看看吧!

面试题网络请求的过程(网络常见面试题)

面试题网络请求的过程

1、GET和POST定义

说道GET和POST,就不得不提HTTP协议,因为浏览器和服务器的交互是通过

HTTP协议执行的,而GET和POST也是HTTP协议中的两种方法。

HTTP全称为Hyper Text Transfer Protocol,中文翻译为超文本传输协议,目

的是保证浏览器与服务器之间的通信。HTTP的工作方式是客户端与服务器之间

的请求-应答协议。

HTTP协议中定义了浏览器和服务器进行交互的不同方法,基本方法有4种,分

别是GET,POST,PUT,DELETE。这四种方法可以理解为,对服务器资源的

查,改,增,删。

GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行

修改。

POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数

据。

PUT:英文含义是放置,也就是向服务器新添加数据,就是所谓的增。

DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。

2、GET和POST区别

1. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的

所有操作对用户来说都是不可见的。 但是这种做法也不时绝对的,大部分

人的做法也是按照上面的说法来的,但是也可以在get请求加上 request

body,给 post请求带上 URL 参数。

2. Get请求提交的url中的数据最多只能是2048字节,这个限制是浏览器或

者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证

服务器和浏览器能够正常运行,防止有人恶意发送请求。Post请求则没有

大小限制。

3. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个

ISO10646字符集。

4. Get执行效率却比Post方法好。Get是form提交的默认方法。

5. GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响

应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发

送data,服务器响应200 ok(返回数据)。

3、什么是对称加密与非对称加密

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题

就是密钥发送问题,即如何安全地将密钥发给对方;

而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但

私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到

加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是

和对称加密比起来,非常的慢

4、什么是HTTP2

HTTP2 可以提高了网页的性能。在 HTTP1 中浏览器限制了同一个域名下的请求数量(Chrome 下一般是六个),当在请求很多资源的时候,由于队头阻塞当浏览器达到最大请求数量时,剩余的资源需等待当前的六个请求完成后才能发起请求。HTTP2 中引入了多路复用的技术,这个技术可以只通过一个 TCP 连接就可以传输所有的请求数据。多路复用可以绕过浏览器限制同一个域名下的请求数量的问题,进而提高了网页的性能。

5、Session、Cookie和Token的主要区别

HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。

5.1什么是cookie

cookie是由Web服务器保存在用户浏览器上的小文件(key-value格式),包含用户相关的信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户身份。

5.2什么是session

session是依赖Cookie实现的。session是服务器端对象session 是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

5.3cookie与session区别

存储位置与安全性:

cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高;

存储空间:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session无此限制占用服务器资源:session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。

5.4什么是Token

Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据

库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提

示,在这样的背景下,Token便应运而生。

Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个

令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以

后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数

据库,使服务器更加健壮。

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务

端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候

带上 Token 证明自己的合法地位

5.5session与token区别

session机制存在服务器压力增大,CSRF跨站伪造请求攻击,扩展性不强等问

题;

session存储在服务器端,token存储在客户端

token提供认证和授权功能,作为身份认证,token安全性比session好;

session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台

服务器上,token适用于项目级的前后端分离(前后端代码运行在不同的服务器下)

6、Servlet是线程安全的吗Servlet不是线程安全的,多线程并发的读写会导致数据不同步的问题。

解决的办法是尽量不要定义name属性,而是要把name变量分别定义在doGet()

和doPost()方法内。虽然使用synchronized(name){}语句块可以解决问题,但

是会造成线程的等待,不是很科学的办法。

注意:多线程的并发的读写Servlet类属性会导致数据不同步。但是如果只是并

发地读取属性而不写入,则不存在数据不同步的问题。因此Servlet里的只读属

性最好定义为final类型的。

,