软件测试面试宝典—http

1.HTTP报文由哪几部分组成?

  1. 请求报文(Request Message)由以下几部分组成:

    • 请求行(Request Line):包含请求方法、请求URL和HTTP协议版本。
    • 请求头部(Request Headers):包含一系列的键值对,用于描述请求的附加信息,如User-Agent、Content-Type等。
    • 空行(Blank Line):用于分隔请求头部和请求体。
    • 请求体(Request Body):可选部分,用于传输请求的数据,例如POST请求中的表单数据或上传的文件等。
  2. 响应报文(Response Message)由以下几部分组成:

    • 状态行(Status Line):包含HTTP协议版本、状态码和状态消息。
    • 响应头部(Response Headers):包含一系列的键值对,用于描述响应的附加信息,如Content-Type、Content-Length等。
    • 空行(Blank Line):用于分隔响应头部和响应体。
    • 响应体(Response Body):可选部分,用于传输响应的数据,例如HTML网页、JSON数据或文件等。

2.HTTP常见的请求方法有哪些?

  1. GET:获取资源。用于请求服务器发送指定资源的内容。GET请求是幂等的,即多次请求同一个资源应该返回相同的结果。

  2. POST:提交数据。用于向服务器提交数据,并请求服务器接受并处理提交的数据。POST请求不是幂等的,即多次请求同一个资源可能会导致不同的结果。

  3. PUT:更新资源。用于向服务器上传新的内容,或者替换指定资源的内容。

  4. DELETE:删除资源。用于请求服务器删除指定的资源。

  5. HEAD:获取资源的元信息。与GET方法类似,但只返回响应头部,不返回实际内容。

  6. OPTIONS:获取服务器支持的HTTP方法。用于请求服务器返回当前资源所支持的HTTP请求方法。

  7. TRACE:回显服务器收到的请求。用于请求服务器返回收到的请求,用于追踪和调试。

  8. CONNECT:建立与服务器的隧道连接。用于请求与目标资源之间建立一条双向的通信隧道。

 3.HTTP常见的状态码有哪些?

  1. 1xx(信息性状态码):表示请求已被接收,继续处理。

  2. 2xx(成功状态码):表示请求已成功被服务器接收、理解和处理。

    • 200 OK:请求成功,返回所请求的资源。
    • 201 Created:请求成功,服务器创建了新的资源。
    • 204 No Content:请求成功,但响应中不包含实体的主体部分。
  3. 3xx(重定向状态码):表示需要进一步操作以完成请求。

    • 301 Moved Permanently:请求的资源已永久移动到新的URL。
    • 302 Found:请求的资源已临时移动到新的URL。
    • 304 Not Modified:资源未修改,使用缓存的版本。
  4. 4xx(客户端错误状态码):表示服务器无法处理客户端的请求。

    • 400 Bad Request:请求无效,服务器无法理解。
    • 401 Unauthorized:请求要求身份验证。
    • 404 Not Found:请求的资源不存在。
  5. 5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。

    • 500 Internal Server Error:服务器内部错误。
    • 503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。

 4.HTTP常见的头部信息有哪些?

HTTP请求报文的头部信息包含以下常见字段:

  1. Host:指定请求的目标服务器的主机名和端口号。

  2. User-Agent:标识发起请求的客户端应用程序或用户代理的信息。

  3. Accept:指定客户端能够处理的响应内容类型。

  4. Accept-Language:指定客户端优先接受的自然语言。

  5. Accept-Encoding:指定客户端能够处理的内容编码方式,如gzip、deflate等。

  6. Connection:指定是否保持连接,常见的取值有"keep-alive"和"close"。

  7. Referer:指定当前请求的来源页面的URL。

  8. Content-Type:指定请求体的媒体类型,常见的取值有"application/x-www-form-urlencoded"和"multipart/form-data"等。

  9. Content-Length:指定请求体的长度。

  10. Authorization:用于身份验证,包含认证凭据。

  11. Cookie:包含服务器发送的Cookie信息。

  12. Cache-Control:指定缓存机制的指令,如"no-cache"、"max-age"等。

  13. If-Modified-Since:指定自从指定日期后,资源是否有修改。

  14. If-None-Match:指定资源的ETag值,用于比较资源是否有修改。

HTTP响应报文的头部信息包含以下常见字段:

  1. Status-Line:包含HTTP协议版本、状态码和状态消息。

  2. Server:指定响应的服务器软件名称和版本号。

  3. Date:指定响应的日期和时间。

  4. Content-Type:指定响应体的媒体类型。

  5. Content-Length:指定响应体的长度。

  6. Content-Encoding:指定响应体的内容编码方式,如gzip、deflate等。

  7. Cache-Control:指定缓存机制的指令,如"no-cache"、"max-age"等。

  8. Last-Modified:指定响应资源的最后修改时间。

  9. ETag:指定响应资源的实体标签,用于比较资源是否有修改。

  10. Location:指定重定向的目标URL。

  11. Set-Cookie:指定服务器发送的Cookie信息。

  12. Access-Control-Allow-Origin:指定响应资源允许的跨域请求源。

  13. Expires:指定响应资源的过期时间。

  14. WWW-Authenticate:用于身份验证,指定服务器要求的认证方式。

 4.HTTP的POST和GET有什么区别?

  1. 数据位置:GET请求将参数包含在URL的查询字符串中,而POST请求将参数包含在请求体中。

  2. 数据长度限制:GET请求对数据长度有限制,通常是URL的长度限制,而POST请求没有固定的长度限制。

  3. 安全性:POST请求相对于GET请求更安全,因为POST请求的参数不会被直接暴露在URL中,而是在请求体中进行传输。

  4. 缓存:GET请求默认可以被缓存,而POST请求默认不能被缓存。

  5. 数据类型:GET请求只能进行简单的数据类型传输,如文本、数字等,而POST请求可以传输任意类型的数据,如文本、文件等。

  6. 幂等性:GET请求是幂等的,即多次相同的GET请求会返回相同的结果;而POST请求不是幂等的,多次相同的POST请求可能会产生不同的结果。

  7. 使用场景:GET请求适合用于获取数据,如获取网页、图片等;POST请求适合用于提交数据,如提交表单、上传文件等。

 5.HTTP和HTTPS的异同点有哪些?

  1. 安全性:

    • HTTP是明文传输协议,数据在传输过程中不加密,容易被窃听和篡改。
    • HTTPS通过使用SSL/TLS协议对数据进行加密和身份验证,保证了传输过程中的安全性。
  2. 默认端口:

    • HTTP默认使用端口80进行通信。
    • HTTPS默认使用端口443进行通信。
  3. 证书:

    • HTTP不需要使用证书。
    • HTTPS需要使用SSL/TLS证书,用于服务器身份验证和加密通信。
  4. 连接建立过程:

    • HTTP的连接建立过程简单,只需要进行三次握手即可建立连接。
    • HTTPS的连接建立过程相对复杂,需要进行SSL/TLS握手过程,包括证书交换、密钥协商等步骤。
  5. 性能:

    • 由于HTTPS需要进行加密和解密操作,相对于HTTP来说,会增加一定的计算和传输开销,导致性能稍低。
  6. 使用场景:

    • HTTP适用于一些不需要保密性和完整性的场景,如浏览普通网页等。
    • HTTPS适用于对数据传输安全性要求较高的场景,如进行在线支付、登录等涉及敏感信息的操作。

6.cookie session和token的区别

  1. Cookie(HTTP Cookie):

    • Cookie是一种在客户端存储数据的机制,通过在浏览器中存储一小段文本信息。
    • 服务器可以通过在响应头中设置Set-Cookie字段将Cookie发送给客户端,客户端会在后续的请求中自动将Cookie包含在请求头中发送给服务器。
    • Cookie可以存储在客户端,用于跟踪用户的身份认证、会话状态等。
    • Cookie的大小有限制,每个域名下的Cookie数量也有限制。
  2. Session:

    • Session是一种在服务器端存储数据的机制,用于跟踪用户的会话状态。
    • 服务器在客户端首次请求时创建一个唯一的Session ID,并将该ID存储在Cookie中发送给客户端。
    • 客户端在后续的请求中将Session ID通过Cookie或URL参数发送给服务器,服务器通过Session ID来识别用户。
    • Session数据存储在服务器端,可以存储更多的信息,并且相对安全。
  3. Token(令牌):

    • Token是一种无状态的身份验证机制,不需要在服务器端存储用户信息。
    • 在身份验证成功后,服务器会生成一个Token,并将其发送给客户端。
    • 客户端在后续的请求中将Token包含在请求头中发送给服务器,服务器通过验证Token的有效性来识别用户。
    • Token通常使用数字签名或加密算法进行保护,确保其不被篡改。

总的来说,Cookie是在客户端存储数据的机制,Session是在服务器端存储数据的机制,而Token是一种无状态的身份验证机制。Cookie和Session需要在服务器端进行状态管理,而Token不需要在服务器端存储状态信息,因此更适合于分布式系统和无状态的API设计。

 

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值