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设计。

 

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。