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方法一般用于
    表单提交。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基础知识总结-CSDN博客

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

  • 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学习笔记,http,网络协议,网络)