HTTP面试题经常在面试被问到,下面给大家总结了常见的HTTP面试题及答案@mikechen
什么是HTTP协议?
HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),它是客户端和服务器之间进行通信的基础,用于请求和响应Web页面、图像、视频等资源。
HTTP请求方法有哪些?
HTTP定义了多种请求方法,用于指定请求的操作类型。常见的HTTP请求方法包括:
- GET:用于从服务器获取资源。
- POST:用于向服务器提交数据,通常用于创建新资源。
- PUT:用于更新服务器上的资源。
- DELETE:用于删除服务器上的资源。
- HEAD:类似于GET,但只返回资源的元数据而不返回内容。
- OPTIONS:用于获取服务器支持的通信选项。
- PATCH:用于部分更新资源。
HTTP状态码有哪些
HTTP状态码是服务器对客户端请求的响应状态的数字代码,一些常见的状态码包括:
- 200 OK:请求成功。
- 404 Not Found:未找到请求的资源。
- 500 Internal Server Error:服务器遇到错误,无法完成请求。
- 302 Found:用于重定向。
更加详细的如下:
HTTP头部有哪些信息
HTTP头部是包含:在HTTP请求和响应中的元数据信息,常见的HTTP头部字段包括:
Content-Type:指示响应的内容类型,例如,text/html或application/json。
Content-Length:指示响应体的长度。
User-Agent:标识发送请求的客户端应用程序。
Cookie:包含在请求中,用于跟踪用户会话。
Cache-Control:控制缓存行为。
详细如下:
HTTP和HTTPS的区别?
主要包含如下区别:
1.安全性
HTTP是不安全的传输协议,在HTTP通信中,数据以纯文本形式传输,容易被窃听和篡改。
HTTPS是安全的传输协议,它通过使用SSL或TLS协议来加密数据传输。
这样数据在传输过程中被加密,使得恶意第三方很难窃听或篡改通信内容,提供了数据的机密性和完整性。
2.端口
HTTP默认使用端口80。
HTTPS默认使用端口443。
3.证书
HTTP:不需要SSL证书。
HTTPS:为使用HTTPS的网站需要获得SSL证书,SSL证书由可信任的第三方机构颁发,用于验证服务器的身份。
4.速度
HTTP通常比HTTPS快,因为HTTPS在加密和解密数据时会引入一些额外的计算开销。
TCP/IP 网络模型
说到 HTTP,不得不提的就是 TCP/IP 网络模型。
一般是五层模型,如下图所示:
但是也可以分为四层,就是把链路层和物理层都表示为网络接口层
还有一种就是 OSI 七层网络模型,它就是在五层协议之上加了表示层和会话层
HTTP Get 和 Post 区别
GET数据通过URL的查询字符串传输,以键值对的形式附加在URL后面。
例如:http://example.com/resource?id=123&name=John。因为数据附加在URL上,所以有长度限制,通常约为2048个字符。
由于数据附加在URL上,因此GET请求对数据的安全性较差,因此,不建议在GET请求中传输敏感数据,如密码。
POST数据在请求体中传输,不会显示在URL中,因此可以传输大量数据而不受URL长度限制的限制。
POST请求将数据放在请求体中,不会在浏览器历史记录中可见,并且可以通过HTTPS进行加密,因此更适合传输敏感数据。
什么是HTTP缓存?
HTTP缓存是一种在客户端和服务器之间存储和重复使用资源的机制,以减少网络请求的次数。
浏览器中的缓存策略包括:
- Cache-Control:通过该头部字段设置缓存策略,如
max-age
指定缓存的有效期。 - ETag:服务器生成的资源标识符,用于验证资源是否已更改。
- Last-Modified:资源的最后修改日期,用于检查资源是否已更改。
- If-None-Match和If-Modified-Since:客户端发送这些条件请求头部来验证资源是否需要重新下载。
什么是HTTP/2和HTTP/3?
HTTP/2和HTTP/3是HTTP协议的新版本,它们旨在提高性能和效率。
HTTP/2引入了多路复用和头部压缩,而HTTP/3使用了基于UDP的传输协议(QUIC),以进一步减少延迟。
什么是CORS(跨源资源共享)
CORS是一种安全机制,用于允许或拒绝Web页面从不同源(域名)加载外部资源。
处理跨域请求通常需要在服务器端设置响应头部,包括Access-Control-Allow-Origin
,以明确指定哪些域名允许访问资源。
陈睿mikechen
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》