客户应该有不同的表现吗?如何?
当前回答
虽然已经有了很多好的答案,但没有一个能从普通浏览器的角度说明缺陷或何时使用其中一个而不是另一个。
当你需要保持对最终URL的动态服务器端控制时,使用302而不是301 HTTP状态。使用301 http状态将使您的浏览器始终从自己的缓存加载最终URL,而不获取任何之前的URL(完全跳过第一次请求)。如果您需要保持服务器端对重定向URL的控制,则可能会产生不可预测的结果。
例如,如果您需要代表用户ip-geo-position (geo-ip-switching)进行URL重定向,请使用302。如果在这种情况下使用301,最终重定向的页面总是直接来自浏览器的缓存,向用户提供不正确/错误的内容。
其他回答
301表示被请求的资源已经被分配了一个新的永久URI,将来任何对该资源的引用都应该使用返回的URI之一。
302表示请求的资源暂时驻留在不同的URI下。
由于重定向有时可能会改变,因此客户端应该继续使用Request-URI来处理将来的请求。
此响应只有在Cache-Control或Expires报头字段指示时才可缓存。
状态301意味着资源(页面)被永久地移动到一个新的位置。从现在开始,客户端/浏览器不应该尝试请求原始位置,而是使用新位置。
状态302意味着资源暂时位于其他地方,客户端/浏览器应该继续请求原始url。
301是永久重定向,302是临时重定向。
浏览器可以缓存301,但302意味着它必须每次都访问我们的系统。假设我们想要最小化系统上的负载,301是正确的决定。想象一下,为一家大公司创建URL缩短服务,我们尽量减少客户对我们服务器的访问
但是如果用户想要编辑他们的短url,浏览器可能需要比平时更多的时间来接受更改,因为浏览器已经缓存了旧的url。此外,如果你想为用户提供他们的URL被点击的频率,301意味着我们不一定能看到来自客户端的每一次点击。因此,如果你想要分析作为一个功能,并在编辑url时有一个流畅的用户体验,302是一个更好的选择。
虽然已经有了很多好的答案,但没有一个能从普通浏览器的角度说明缺陷或何时使用其中一个而不是另一个。
当你需要保持对最终URL的动态服务器端控制时,使用302而不是301 HTTP状态。使用301 http状态将使您的浏览器始终从自己的缓存加载最终URL,而不获取任何之前的URL(完全跳过第一次请求)。如果您需要保持服务器端对重定向URL的控制,则可能会产生不可预测的结果。
例如,如果您需要代表用户ip-geo-position (geo-ip-switching)进行URL重定向,请使用302。如果在这种情况下使用301,最终重定向的页面总是直接来自浏览器的缓存,向用户提供不正确/错误的内容。
大多数情况下,301 vs 302对于搜索引擎的索引很重要,因为他们的爬虫会考虑这一点,并在使用301时转移PageRank。
详情见Peter Lee的回答。
推荐文章
- 发送字符串到stdin
- 什么是HTTP“主机”报头?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- 如何让Chrome允许混合内容?
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?
- 了解Chrome网络日志“停滞”状态
- 用户代理字符串可以有多大?
- 什么是接受* HTTP报头q=0.5 ?
- HTTP状态码200(缓存)和状态码304之间有什么区别?
- HTTP POST返回错误:417“期望失败。”
- 登录后,Laravel重定向回原始目的地