Http协议常见面试题

1、常见的Http Method有哪些,使用场景分别是什么

http1.0定义了三种:

GET: 向服务器获取资源,比如常见的查询请求
POST: 向服务器提交数据而发送的请求
Head: 和get类似,返回的响应中没有具体的内容,用于获取报头

http1.1定义了六种:

PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新

PATCH:PUT 方法的补充,更新指定资源的部分数据

DELETE:用于删除指定的资源

OPTIONS: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等

CONNECT: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户

TRACE:回显服务器收到的请求,主要用于测试或诊断

 2、常见http状态码解析

浏览器向服务器请求时,服务端响应的消息头里面有状态码,表示请求结果的状态。

1XX: 收到请求,需要请求者继续执行操作,比较少用;

2XX: 请求成功,常用的 200;

3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;

301:永久性跳转,比如域名过期,换个域名 302:临时性跳转

使用场景:网站改版、域名迁移等,多个域名指向同个主站导流

4XX: 客户端出错,请求包含语法错误或者无法完成请求 

400: 请求出错,比如语法协议

403: 没权限访问

404: 找不到这个路径对应的接口或者文件

405: 不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET

5XX: 服务端出错,服务器在处理请求的过程中发生了错误

500: 服务器内部报错了,完成不了这次请求

503: 服务器宕机

3、Cookie和Session的区别和联系

cookie数据保存在客户端,session数据保存在服务端

cookie不是很安全,容易泄露,不能直接明文存储信息

cookie大小和数量存储有限制

 4、介绍下JWT

JWT(JSON Web Token) 是一种开放标准,用于在网络应用环境中安全地传输声明,通常用于身份验证和授权。它基于JSON格式,通过加密或签名确保数据的完整性和可信度。

JWT格式组成 头部(header)、负载(payload)、签名(signature)。 

  • 头部:主要是描述签名算法
  • 负载:主要描述是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss签发者,exp 过期时间,sub 面向的用户
  • 签名:主要是把前面两部分进行加密,防止别人拿到token进行base解密后篡改token

通俗来说,就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息。

使用JWT的优点:

  • 生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库
  • 存储在客户端,不占用服务端的内存资源,使用加解密的方式进行校验,在分布式业务中能较好的提高性能和节省空间

使用JWT的缺点:

  • token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等
  • 如果没有服务端存储,则不能做登录失效处理,除非服务端改秘钥

生成的token,在客户端或者浏览器是存储在cookie,localstorage和sessionStorage里面的。

5、浏览器输入一个url到用户看到结果,中间经过哪些流程

1、浏览器输入url, 解析url地址是否合法

2、浏览器检查是否有缓存, 如果有直接显示。如果没有跳到第三步。

3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。

4、浏览器向服务器发起tcp链接,完成tcp三次握手

5、握手成功后,浏览器向服务器发送http请求

6、服务器收到处理的请求,将数据返回至浏览器

7、浏览器收到http响应。

8、浏览器解析响应。如果响应可以缓存,则存入缓存

9、浏览器进行页面渲染

6、什么是浏览器同源策略

浏览器同源策略是浏览器实施的一种安全机制,旨在防止不同来源的网页内容互相访问或操作,从而保护用户隐私和数据安全。

同源策略规定:只有协议、域名、端口均相同的两个页面,才被视为“同源”。若其中任意一项不同,则视为“不同源”。

解决方法:

  • JSONP

  • 页面这层再包装一层服务,目前最多就是nodejs

  • Http响应头配置允许跨域

比如:

//表示接受任意域名的请求,也可以指定域名
response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));

### 常见的通信协议面试题目及答案 #### HTTP 协议的工作原理是什么? HTTP (HyperText Transfer Protocol) 是一种用于分布式、协作式和超媒体信息系统的信息系统应用层请求/响应式的协议HTTP 使用客户端-服务器模型,当浏览器作为客户端发送请求到服务器端时,服务器会返回相应的HTML文件给客户端显示。HTTP默认使用80端口[^1]。 ```python import http.client conn = http.client.HTTPConnection("example.com", 80) conn.request("GET", "/") response = conn.getresponse() print(response.status, response.reason) data = response.read() print(data.decode()) ``` #### TCP 和 UDP 的区别在哪里? TCP(Transmission Control Protocol)是一种面向连接的、可靠的字节流服务传输层协议。而UDP(User Datagram Protocol)则是无连接的数据报文服务。两者的主要区别如下: - **可靠性**:TCP 提供可靠的服务,通过确认机制来保证数据包按序到达目的地;UDP 不提供任何形式的消息重传或排序功能。 - **速度**:由于TCP有流量控制、拥塞控制等功能,因此相对慢一些;相比之下,UDP更快因为其简单的设计减少了额外开销。 - **应用场景**:对于实时性要求较高的场景如视频会议通常采用UDP;而对于需要确保数据完整性的场合比如网页浏览,则更适合用TCP[^2]。 #### DNS 解析过程是如何工作的? DNS(Domain Name System),即域名解析系统,它能够把人们容易记忆理解的名字转换成机器可以识别处理的形式——IP地址。具体流程如下: 1. 客户端发起查询请求至本地缓存或者指定DNS服务器; 2. 如果该DNS服务器无法直接给出应答,则继续向上级权威DNS询问直至根域名称服务器获取最终结果; 3. 将得到的结果反馈回最初发出请求的一方完成整个解析操作. #### SSL/TLS 握手的过程是怎样的? SSL(Secure Sockets Layer)/TLS(Transport Layer Security)握手机制是为了在网络环境中建立安全通道所必需的一个重要环节。主要分为以下几个阶段: 1. Client Hello: 客户端向服务端发送支持加密算法列表以及随机数; 2. Server Hello: 服务端从中挑选出双方都认可的一种加密方式,并且回复自己的证书还有另一个随机数值; 3. Key Exchange & Finished Messages: 双方基于之前交换过的参数计算出会话密钥并验证对方身份合法性之后就可以开始正常通讯了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值