1.HTTP报文由哪几部分组成?
请求报文(Request Message)由以下几部分组成:
- 请求行(Request Line):包含请求方法、请求URL和HTTP协议版本。
- 请求头部(Request Headers):包含一系列的键值对,用于描述请求的附加信息,如User-Agent、Content-Type等。
- 空行(Blank Line):用于分隔请求头部和请求体。
- 请求体(Request Body):可选部分,用于传输请求的数据,例如POST请求中的表单数据或上传的文件等。
响应报文(Response Message)由以下几部分组成:
- 状态行(Status Line):包含HTTP协议版本、状态码和状态消息。
- 响应头部(Response Headers):包含一系列的键值对,用于描述响应的附加信息,如Content-Type、Content-Length等。
- 空行(Blank Line):用于分隔响应头部和响应体。
- 响应体(Response Body):可选部分,用于传输响应的数据,例如HTML网页、JSON数据或文件等。
2.HTTP常见的请求方法有哪些?
GET:获取资源。用于请求服务器发送指定资源的内容。GET请求是幂等的,即多次请求同一个资源应该返回相同的结果。
POST:提交数据。用于向服务器提交数据,并请求服务器接受并处理提交的数据。POST请求不是幂等的,即多次请求同一个资源可能会导致不同的结果。
PUT:更新资源。用于向服务器上传新的内容,或者替换指定资源的内容。
DELETE:删除资源。用于请求服务器删除指定的资源。
HEAD:获取资源的元信息。与GET方法类似,但只返回响应头部,不返回实际内容。
OPTIONS:获取服务器支持的HTTP方法。用于请求服务器返回当前资源所支持的HTTP请求方法。
TRACE:回显服务器收到的请求。用于请求服务器返回收到的请求,用于追踪和调试。
CONNECT:建立与服务器的隧道连接。用于请求与目标资源之间建立一条双向的通信隧道。
3.HTTP常见的状态码有哪些?
1xx(信息性状态码):表示请求已被接收,继续处理。
2xx(成功状态码):表示请求已成功被服务器接收、理解和处理。
- 200 OK:请求成功,返回所请求的资源。
- 201 Created:请求成功,服务器创建了新的资源。
- 204 No Content:请求成功,但响应中不包含实体的主体部分。
3xx(重定向状态码):表示需要进一步操作以完成请求。
- 301 Moved Permanently:请求的资源已永久移动到新的URL。
- 302 Found:请求的资源已临时移动到新的URL。
- 304 Not Modified:资源未修改,使用缓存的版本。
4xx(客户端错误状态码):表示服务器无法处理客户端的请求。
- 400 Bad Request:请求无效,服务器无法理解。
- 401 Unauthorized:请求要求身份验证。
- 404 Not Found:请求的资源不存在。
5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。
- 500 Internal Server Error:服务器内部错误。
- 503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。
4.HTTP常见的头部信息有哪些?
HTTP请求报文的头部信息包含以下常见字段:
Host:指定请求的目标服务器的主机名和端口号。
User-Agent:标识发起请求的客户端应用程序或用户代理的信息。
Accept:指定客户端能够处理的响应内容类型。
Accept-Language:指定客户端优先接受的自然语言。
Accept-Encoding:指定客户端能够处理的内容编码方式,如gzip、deflate等。
Connection:指定是否保持连接,常见的取值有"keep-alive"和"close"。
Referer:指定当前请求的来源页面的URL。
Content-Type:指定请求体的媒体类型,常见的取值有"application/x-www-form-urlencoded"和"multipart/form-data"等。
Content-Length:指定请求体的长度。
Authorization:用于身份验证,包含认证凭据。
Cookie:包含服务器发送的Cookie信息。
Cache-Control:指定缓存机制的指令,如"no-cache"、"max-age"等。
If-Modified-Since:指定自从指定日期后,资源是否有修改。
If-None-Match:指定资源的ETag值,用于比较资源是否有修改。
HTTP响应报文的头部信息包含以下常见字段:
Status-Line:包含HTTP协议版本、状态码和状态消息。
Server:指定响应的服务器软件名称和版本号。
Date:指定响应的日期和时间。
Content-Type:指定响应体的媒体类型。
Content-Length:指定响应体的长度。
Content-Encoding:指定响应体的内容编码方式,如gzip、deflate等。
Cache-Control:指定缓存机制的指令,如"no-cache"、"max-age"等。
Last-Modified:指定响应资源的最后修改时间。
ETag:指定响应资源的实体标签,用于比较资源是否有修改。
Location:指定重定向的目标URL。
Set-Cookie:指定服务器发送的Cookie信息。
Access-Control-Allow-Origin:指定响应资源允许的跨域请求源。
Expires:指定响应资源的过期时间。
WWW-Authenticate:用于身份验证,指定服务器要求的认证方式。
4.HTTP的POST和GET有什么区别?
数据位置:GET请求将参数包含在URL的查询字符串中,而POST请求将参数包含在请求体中。
数据长度限制:GET请求对数据长度有限制,通常是URL的长度限制,而POST请求没有固定的长度限制。
安全性:POST请求相对于GET请求更安全,因为POST请求的参数不会被直接暴露在URL中,而是在请求体中进行传输。
缓存:GET请求默认可以被缓存,而POST请求默认不能被缓存。
数据类型:GET请求只能进行简单的数据类型传输,如文本、数字等,而POST请求可以传输任意类型的数据,如文本、文件等。
幂等性:GET请求是幂等的,即多次相同的GET请求会返回相同的结果;而POST请求不是幂等的,多次相同的POST请求可能会产生不同的结果。
使用场景:GET请求适合用于获取数据,如获取网页、图片等;POST请求适合用于提交数据,如提交表单、上传文件等。
5.HTTP和HTTPS的异同点有哪些?
安全性:
- HTTP是明文传输协议,数据在传输过程中不加密,容易被窃听和篡改。
- HTTPS通过使用SSL/TLS协议对数据进行加密和身份验证,保证了传输过程中的安全性。
默认端口:
- HTTP默认使用端口80进行通信。
- HTTPS默认使用端口443进行通信。
证书:
- HTTP不需要使用证书。
- HTTPS需要使用SSL/TLS证书,用于服务器身份验证和加密通信。
连接建立过程:
- HTTP的连接建立过程简单,只需要进行三次握手即可建立连接。
- HTTPS的连接建立过程相对复杂,需要进行SSL/TLS握手过程,包括证书交换、密钥协商等步骤。
性能:
- 由于HTTPS需要进行加密和解密操作,相对于HTTP来说,会增加一定的计算和传输开销,导致性能稍低。
使用场景:
- HTTP适用于一些不需要保密性和完整性的场景,如浏览普通网页等。
- HTTPS适用于对数据传输安全性要求较高的场景,如进行在线支付、登录等涉及敏感信息的操作。
6.cookie session和token的区别
Cookie(HTTP Cookie):
- Cookie是一种在客户端存储数据的机制,通过在浏览器中存储一小段文本信息。
- 服务器可以通过在响应头中设置Set-Cookie字段将Cookie发送给客户端,客户端会在后续的请求中自动将Cookie包含在请求头中发送给服务器。
- Cookie可以存储在客户端,用于跟踪用户的身份认证、会话状态等。
- Cookie的大小有限制,每个域名下的Cookie数量也有限制。
Session:
- Session是一种在服务器端存储数据的机制,用于跟踪用户的会话状态。
- 服务器在客户端首次请求时创建一个唯一的Session ID,并将该ID存储在Cookie中发送给客户端。
- 客户端在后续的请求中将Session ID通过Cookie或URL参数发送给服务器,服务器通过Session ID来识别用户。
- Session数据存储在服务器端,可以存储更多的信息,并且相对安全。
Token(令牌):
- Token是一种无状态的身份验证机制,不需要在服务器端存储用户信息。
- 在身份验证成功后,服务器会生成一个Token,并将其发送给客户端。
- 客户端在后续的请求中将Token包含在请求头中发送给服务器,服务器通过验证Token的有效性来识别用户。
- Token通常使用数字签名或加密算法进行保护,确保其不被篡改。
总的来说,Cookie是在客户端存储数据的机制,Session是在服务器端存储数据的机制,而Token是一种无状态的身份验证机制。Cookie和Session需要在服务器端进行状态管理,而Token不需要在服务器端存储状态信息,因此更适合于分布式系统和无状态的API设计。文章来源:https://www.toymoban.com/news/detail-824788.html
文章来源地址https://www.toymoban.com/news/detail-824788.html
到了这里,关于软件测试面试宝典—http的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!