1、http 响应码 301 和 302 代表的是什么?有什么区别?
当客户端发送一个请求到服务器时,服务器会根据请求的 URL 进行处理,并返回一个响应码。301 和 302 都是常见的重定向状态码,它们的含义和区别如下:
-
301 Moved Permanently(永久性重定向):表示请求的资源已经被永久移动到新的位置。当服务器返回 301 响应码时,它还会在响应头中包含一个
Location
字段,指定新的资源位置。客户端在接收到 301 响应后,应该将所有对原始 URL 的请求重定向到新的位置。301 重定向通常用于网站的改版、域名变更或资源的永久迁移等情况。 -
302 Found(临时性重定向):表示请求的资源暂时被移动到了新的位置。与 301 不同,302 重定向是临时性的,客户端在接收到 302 响应后,应该将对原始 URL 的请求重定向到新的位置,但客户端下次再请求原始 URL 时,服务器可能会返回 200 响应码,即表示资源已经恢复到原始位置。302 重定向通常用于临时维护、服务器负载均衡或临时 URL 变更等情况。
总的来说,301 和 302 重定向的主要区别在于它们的永久性和临时性。301 重定向表示资源已经永久移动,客户端应该将所有对原始 URL 的请求重定向到新的位置;而 302 重定向表示资源只是暂时移动,客户端在下次请求原始 URL 时,服务器可能会返回不同的响应码。
2、forward 和 redirect 的区别?
forward
和redirect
是 Web 应用程序中常用的两种页面跳转方式,它们的主要区别在于:
-
请求转发(Forward):
- 发生在服务器内部,由服务器端直接将请求转发到另一个页面。
- 浏览器地址栏不会发生变化,用户在浏览器中看到的仍然是原始的 URL。
- 由于请求是在服务器内部处理的,因此效率较高。
- 可以在一个 Web 应用程序内部的多个页面之间进行跳转。