HTTP协议基础--面试经典必问问题汇总!!!

目录

一、HTTP协议有几种请求?

二、HTTP协议中get请求和post请求的区别?

三、HTTP请求的响应状态码有哪些?

四、HTTP的post请求提交数据有几种方式?

1.JSON数据

2.文件上传

3.表单提交

五、HTTP请求中cookie、session、token的区别?

1.Cookie

2.Session

3.Token

六、HTTP和HTTPS在发送请求时的区别?


本文主要总结了几个面试必问的HTTP协议基础问题,建议宝子们直接码住!!!

一、HTTP协议有几种请求?

  • GET---获取资源
  • POST---传输实体,表单提交
  • PUT---传输文件
  • HEAD---响应头部
  • DELETE---删除文件
  • OPTIONS---询问支持的方法
  • TRACE---追踪路径
  • CONNECT---隧道协议连接代理
  • LINK---建立联系
  • UNLINK---断开连接关系

二、HTTP协议中get请求和post请求的区别?

  • get方法一般用于请求,请求服务器返回资源;post方法一般用于<form>表单提交。get相当于一个是pull/拉的操作,而post相当于是一个push/推的操作。
  • get方法不安全,在发送请求过程中,请求参数会拼接在URL后面,很容易被攻击者窃取,很容易对信息造成破坏和伪造,post方法将参数放在请求体body种,对用户来说不可见。
  • get请求的URL有长度限制,而post请求会将参数和值放在消息体中,对数据长度没有要求。
  • get请求会被浏览器主动cache,而post不会,除非手动设置。
  • get请求在浏览器反复的回退/前进操作是无害的,而post操作会再次提交表单请求。
  • get请求在发送过程中会产生一个TCP数据包,而post在发送过程中会产生两个TCP数据包。对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

三、HTTP请求的响应状态码有哪些?

全量详细的状态码可参考上篇博客中的HTTP状态码分类HTTP基础知识总结-优快云博客

这里介绍列出几个常见的状态码:

  • 200(OK):请求成功。一般用于get和post请求。
  • 301(Moved Permanently):永久移动。请求的资源已被永久的移动到新的URI。
  • 302(Found):临时移动。资源只是临时被移动,客户端继续使用原有URI。
  • 400(Bad Request):客户端请求的语法错误,服务器无法理解。
  • 401(Unauthorized):请求要求用户的身份认证。
  • 403(Forbidden):服务器理解客户端的请求,但是拒绝执行。
  • 404(Not Found):服务器无法根据客户端的请求找到资源(网页)。
  • 500(Internal Sever Error):服务器内部错误,无法完成请求。
  • 502(Bad Gateway):作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

四、HTTP的post请求提交数据有几种方式?

1.JSON数据

请求体中包含一个JSON对象,服务器会解析JSON数据并处理。

 请求实例:

POST /api/login HTTP/1.1

Host:example.com

Content-Type:application/json

{
    "name" : "Alice",
    "password" : "123456"
}

2.文件上传

 请求实例:比如分片上传文件

POST /api/upload HTTP/1.1
Host: example.com
Content-Type:multipart/form-data;boundary=---WebKitFormBoundaryMyxQFnp7oQ5K9IRu

---WebKitFormBoundaryMyxQFnp7oQ5K9IRu
Content-Disposition: form-data; name="slice"; filename="file.txt"
Content-Type: application/octet-stream


[二进制文件信息]
---WebKitFormBoundaryMyxQFnp7oQ5K9IRu

3.表单提交

表单数据以键值对的格式发送到服务器。如:key1=value1&key2=value2。

 请求实例:

POST /api/input HTTP/1.1
Host: example.com
Content-Type:application/x-www-form-urlencoded
directory=false&username=Alice&path=./file.txt&file_size=1712

五、HTTP请求中cookie、session、token的区别?

1.Cookie

Cookie:是浏览器用来保存用户信息的。

HTTP是无状态的协议,对用户的操作没有记忆能力,但是我们登录后下次登录就不用在重新输入用户名和密码,这起作用的就是Cookie,能够使浏览器具有记忆能力。

Cookie只能用在单个节点的域或者它的子域中有效,不能进行跨域认证。

Cookie是有存储大小限制的,大概4KB左右。

Cookie存储在客户端。

2.Session

Session:是一次会话。

当客户端向服务器发送请求时,服务端会给客户端发送一个认证信息,服务器在第一次接收到请求时,开辟了一块Session空间(创建了Session对象),同时生成一个sessionID,通过响应头的Set-Cookie:sessionID=XX,向客户端发送要去设置Cookie的响应;客户端在收到响应后,会在本机客户端设置一个sessionID=XX的Cookie信息,该Cookie的过期时间为浏览器会话结束。

也就是说:sessionID是Cookie和Session之间的桥梁

Session存储在服务端,Session比Cookie是更安全的。

Session的存储空间很大,无限制。

3.Token

Token:服务器返回的一个临时签名数据,可以使用这个签名数据表明用户身份。Token是一个由一串字符组成的令牌,可以进行身份验证和授权。

Token体积很小,可以自由操作存储位置。


六、HTTP和HTTPS在发送请求时的区别?

  • HTTP请求在地址栏显示为:http://example.com;HTTPS请求在地址栏显示为:https://example.com
  • HTTPS就是身披了一层SSL的HTTP。即:HTTPS=HTTP+SSL
  • HTTP请求的默认端口为80;HTTPS请求的默认端口为443
  • HTTP连接是无状态的;HTTPS协议由HTTP+SSL协议组成可进行加密传输、身份认证等,比HTTP协议更安全
  • HTTP是超文本传输协议,信息是明文传输;HTTPS是SSL加密传输协议
### HTTP协议常见面试问题及解答 #### 1. HTTP握手的过程是什么? HTTP握手是建立在TCP连接之上的,具体包括以下几个阶段: - **建立TCP连接**:客户端向服务器发起三次握手以建立可靠的TCP连接。 - **发送HTTP请求**:一旦TCP连接成功建立,客户端通过该连接发送HTTP请求消息给服务器。 - **接收HTTP响应**:服务器处理收到的请求后返回相应的HTTP响应消息给客户端。 - **关闭TCP连接**:当双方完成数据交互后,通常会断开TCP连接。 这些步骤确保了客户端与服务器之间能有效地进行通信并交换所需的数据[^1]。 #### 2. HTTP/1.0 和 HTTP/1.1 的主要区别有哪些? 相比于HTTP/1.0, HTTP/1.1引入了一些重要的改进特性: - 支持持久连接(Persistent Connections),即在一个TCP连接上可以传送多个HTTP请求和应答; - 添加了`Host`头字段用于支持虚拟主机(Virtual Hosting)功能; - 提供分块编码(Chunked Transfer Encoding)机制允许动态长度的内容传输; - 更加完善的缓存控制(Cache-Control)指令集以及条件GET方法(If-Modified-Since / If-None-Match)来优化资源获取效率; 上述变化显著提高了Web应用性能和服务质量。 #### 3. 如何理解WebSocket协议HTTP之间的关系? 虽然两者都是基于TCP的应用层协议,但是它们有着不同的设计目标和技术特点。WebSocket是在原有HTTP基础上发展起来的一种全双工通讯协议,在初次握手时遵循标准HTTP格式,之后则切换至更高效的二进制帧结构来进行双向实时通信。因此可以说WebSocket是对传统HTTP单次请求回应模式的有效补充和发展延伸。 ```python import websocket def on_message(ws, message): print(f"Received: {message}") ws = websocket.WebSocketApp("wss://example.com/socket", on_message=on_message) ws.run_forever() ``` #### 4. 当浏览器输入URL按下回车键后会发生什么? 整个流程大致如下所示: - DNS解析域名成IP地址; - 建立TCP/IP连接到指定端口,默认情况下HTTP服务监听80端口而HTTPS则是443端口; - 发送HTTP GET 请求携带要的头部信息如User-Agent等; - 接收来自服务器的一系列响应报文直至结束标志符到达为止; - 渲染HTML文档树形结构同时加载外部样式表、脚本文件等内容片段; - 执行JavaScript代码触发DOM事件更新视图界面显示效果。 此过程涉及到了网络编程中的诸多概念和技术要点,对于深入理解和掌握计算机科学基础知识具有重要意义[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值