什么是307临时重定向,什么时候需要使用?

温馨提示:注册会员付费购买资源可永久免费下载更新版本

错误类型: HTTP错误 错误名称: HTTP 307临时重定向 英文名称: 307 Temporary Redirect 错误描述: 这原则上并不是一个错误。307(临时重定向)状态码表示目标资源临时驻留在不同的 URI 下,如果用户代理执行自动重定向到该 URI,则用户代理不得更改请求方法。由于重定向会随着时间的推移而改变,客户端应该继续使用原始的有效请求 URI 来处理未来的请求。

HTTP协议定义了40多个服务器状态代码,其中9个明确用于URL重定向。每个重定向状态代码都以数字3 (HTTP 3xx)开始,并且有自己处理重定向的方法。虽然它们中的一些是相似的,但是它们都以不同的方式处理重定向。

作为一个站长,了解你可能遇到的各种超文本传输协议(HTTP)状态码是非常重要的。其他像“307重定向”这样的错误,对于保证访问者能够成功访问你的URL(而你不会被搜索引擎惩罚)至关重要。然而,这并不是唯一可用的重定向类型,所以您可能想知道什么时候适合使用它。

本文将深入介绍HTTP 307临时重定向和307内部重定向状态码,包括它们的重要性以及与其他3xx重定向状态码的区别。

什么是HTTP 307临时重定向?

HTTP 3xx重定向如何工作

各种HTTP 3xx重定向

使用302 vs 303 vs 307进行临时重定向

仅了解HTTPS站点的HTTP 307内部重定向

HTTP 307重定向和SEO

什么是HTTP 307临时重定向?

互联网任务组(IETF)将307临时重定向定义为:

07(临时重定向)状态代码表示目标资源临时驻留在不同的URI下。如果用户代理执行到此URI的自动重定向,则用户代理不得更改请求方法。由于重定向会随着时间的推移而改变,客户端应该继续使用原始的有效请求URI来处理未来的请求。

HTTP状态代码有几十种,主要分为五类。例如,遵循“4XX”结构的代码(如404)是一个客户端错误。

HTTP“3XX”是重定向类别。有九种不同类型的重定向。例如,301状态代码用于指示网页何时被永久移动。

重定向状态代码对于搜索引擎优化(SEO)是必不可少的。将用户和搜索引擎机器人正确地路由到适当的URL是很重要的,尤其是当他们移动的时候。

307是临时重定向。此HTTP响应状态代码意味着某人请求的URL已被临时移动到不同的URI(用户资源标识符),但最终将返回到其原始位置。另外,它告诉搜索引擎你的服务器兼容HTTP 1.1。

不太技术性,307重定向是302重定向的更新版本(或后续版本)。后者可以用来临时将用户重新路由到一个新的URL,这在你重新设计网站时会派上用场。

另一方面,307重定向表示用户请求的URL已被移动到临时位置,但将被返回。302和307的主要区别在于,请求方法不会随着307状态代码而改变:

例如,请求不能从GET更改为POST。必须是得到和得到,或者张贴和张贴。简而言之,这些请求-响应方法就是浏览器和服务器通信的方式。可以在W3Schools上了解更多关于各种HTTP请求方法的区别。

HTTP 3xx重定向如何工作

在我们深入研究HTTP 307临时重定向和307内部重定向响应之前,让我们了解一下HTTP重定向是如何工作的。

HTTP状态代码是服务器对浏览器的响应。每个状态代码都是一个三位数,第一个数字定义了响应的类型。HTTP 3xx状态码表示重定向。它们指示浏览器重定向到一个新的URL,该URL在服务器响应的Location头中定义。

HTTP 3xx重定向

当您的浏览器遇到来自服务器的重定向请求时,它需要知道请求的性质。各种HTTP 3xx重定向状态代码处理这些请求。了解这一切有助于我们更好地理解307临时重定向和307内部重定向。

当我们谈论时,你应该使用307重定向,这可能有助于理解它如何工作。首先,您的浏览器向您试图访问的网站的Web服务器发送一个初始请求。

然后,服务器使用Location头以HTTP 3XX状态代码(本例中为307)进行响应。然后,浏览器将请求发送到新的URL位置,服务器再次响应(这一次是通过发送显示网页所需的数据)。

请注意,307重定向有两种类型:临时和内部。307内部重定向是307的临时变体,发生在浏览器级别。所以不会影响你网站的SEO。

各种HTTP 3xx重定向

有几种类型的HTTP 3xx重定向状态代码。原来的HTTP规范不包括307临时重定向和308永久重定向,因为这些角色是由301永久迁移和302发现来填充的。

然而,大多数客户机将HTTP请求方法从POST改为GET,以获得301和302重定向响应,尽管HTTP规范不允许客户机这样做。这种行为要求在HTTP/1.1更新中引入更严格的307临时重定向和308永久重定向状态代码。

HTTP 307内部重定向响应是307临时重定向状态代码的变体。它不是由HTTP标准定义的,而是一个本地浏览器实现。我们稍后将更详细地讨论它。

虽然默认情况下会缓存重定向状态代码(如301和308 ),但其他代码(如302和307)则不会。但是,通过添加Cache-Control或Expires响应头字段,可以使所有重定向响应可缓存(或不可缓存)。

HTTP重定向并不复杂。

使用302 vs 303 vs 307进行临时重定向

如上所示,对于临时重定向,您有三个选项:302、303或307。但是,大多数客户端将302状态代码视为303响应,并将HTTP请求方法更改为GET。从安全性的角度来看,这并不理想。

RFC 1945和RFC 2068规定不允许客户端更改重定向请求的方法。然而,大多数现有的用户代理实现将302视为303响应,并对位置字段值执行GET,而不考虑原始请求方法。代码303和307已添加到服务器中,这些服务器希望了解客户端预期的反应。”–HTTP/1.1 .状态代码定义,W3.org

所以对于需要维护HTTP请求方法的临时重定向,请使用更严格的HTTP 307临时重定向响应。

例如,将/register-form.html重定向到signup-form.html,或者从/login.php重定向到/login.php

如果需要将重定向请求方法更改为GET,请改用303 See Other response。

例如,从/register.php页面重定向POST请求,通过GET请求加载/success.html页面。

除非您的目标受众使用旧客户端,否则请避免使用302 Found来重定向响应。

仅了解HTTPS站点的HTTP 307内部重定向

如果您有一个只支持HTTPS的网站,当您试图通过常规的http://不安全地访问它时,您的浏览器将自动重定向到它的安全版本https://。通常,这发生在来自服务器的301永久迁移重定向响应中。

例如,如果您访问http://citibank.com,在Chrome中加载DevTools并选择Network选项卡,您可以看到浏览器和服务器之间的所有请求。

第一个响应是301永久移动,这将浏览器重定向到该网站的HTTPS版本。

01响应重定向至HTTPS版本

如果我们深入研究第一个请求的头字段,我们可以看到位置响应头定义了重定向的安全URL是什么。

响应头定义了重定向URL。

这种方法的问题是,恶意行为者可以劫持网络连接,将浏览器重定向到自定义URL。像这样的中间人(MITM)攻击非常常见。某热门电视剧甚至有一集恶搞过。

此外,恶意方可以在不更改浏览器地址栏中显示的URL的情况下发起MITM攻击。例如,您可以为用户提供一个看起来与原始站点完全相同的钓鱼页面。

由于一切看起来都一样,包括地址栏中的URL,大多数用户会很乐意输入他们的凭据。你可以想象为什么这是如此糟糕。

01重定向到HTTPS是不安全的

使用HTTP 307内部重定向的安全重定向

现在,让我们用闪电Bo尝试同样的例子。访问http://www.wbolt.com将导致网络请求,如下面的屏幕截图所示。

37内部重定向示例

站点的第一个请求类似于前面的例子,但是这一次它将导致307内部重定向响应。单击它将向我们显示有关此响应的更多详细信息。

注意:如果您尝试使用https://直接访问该站点,您将不会看到此标头,因为浏览器不需要执行任何重定向。

307内部重定向响应的响应头

注意非权威原因:HSTS回复标题。这是HTTP的严格传输安全(HSTS ),也称为严格传输安全响应头。

什么是HSTS(严格传输安全)?

IETF在2012年批准了HTTP严格传输安全(HSTS),以强制浏览器在网站严格运行HTTPS时使用安全连接。

这类似于Chrome或Firefox说,“我甚至不会试图通过不安全的HTTP协议请求这个站点或它的任何资源。相反,我会把它改成HTTPS,再试一次。”

通过307内部重定向响应提高安全性

研究第二个请求的响应头将有助于我们更好地理解它。

验证HSTS响应标头

在这里,您可以看到strict-transport-security:maxage = 31536000响应头。

strict-transport-security响应标头的max-age属性定义了浏览器应该遵循此模式的时间。在上面的示例中,该值被设置为3153600秒(或1年)。

一旦站点返回这个响应头,浏览器甚至不会尝试发出普通的HTTP请求。相反,它将执行307内部重定向到HTTPS,然后重试。

每次重复此过程时,都会重置响应标头。因此,浏览器将无法无限期地发出不安全的请求。

什么是HSTS预加载列表?

即使使用HSTS,也存在明显的安全问题。你的浏览器发出的第一个HTTP请求不安全,所以重复了我们之前在花旗银行观察到的问题。

此外,HSTS响应报头只能通过HTTPS发送,因此初始的不安全请求甚至不能被返回。

为了解决这个问题,HSTS在其响应头中支持预加载属性。这个想法是有一个网站列表,并强制在浏览器中预装HSTS,完全绕过这个安全问题。

将您的站点添加到浏览器的HSTS预加载列表中,它会知道您的站点执行严格的HSTS政策,即使是第一次访问您的站点。然后,在请求其他任何东西之前,浏览器会使用307内部重定向响应将您的站点重定向到它的安全https://方案。

你要注意,与307临时重定向不同,307内部重定向响应是浏览器自己设置的“假头”。它不是来自服务器、网络主机或CMS(如WordPress)。

将站点添加到HSTS预加载列表有许多优点:

Web服务器永远不会看到不安全的HTTP请求。这减少了服务器的负载,使网站更加安全。

浏览器负责从HTTP重定向到HTTPS,使网站更快更安全。

HSTS预载清单要求

如果您想将该站点添加到浏览器的HSTS预加载列表中,您需要检查以下条件:

为您的域安装了有效的SSL/TLS证书。

通过将所有HTTP流量重定向到HTTPS来实施严格的HTTPS。

所有子域都应该通过HTTPS提供服务,尤其是www子域(如果该子域的DNS记录存在)。

您的基本域应该包含具有以下属性的HSTS标头:最大周期属性必须至少设置为31536000秒(1年)。

必须指定IncludeSubdomains和preload指令。

如果您提供额外的重定向服务,它必须包含HSTS头,而不是它被重定向到的页面。

从HSTS预加载列表中删除您的域名可能会非常困难且耗时(长达12周或更长)。只有当你完全致力于在你的网站上使用HTTPS时,才启用HSTS。您可以通过在hstspreload.org上提交表单,将您的网站从HSTS预加载列表中删除。

将您的网站添加到HSTS预加载列表。

HSTS预加载列表提交

有两种方法可以将您的站点添加到HSTS预加载列表中。

提交您的网站到HSTS预加载列表目录。例如,hstspreload.org主列表由Chromium开源项目维护,并被大多数主流浏览器(Firefox、Chrome、Safari、IE 11和Edge)使用。

通过以下标题字段添加到您的站点:

严格的传输安全性:max-age = 63072000包括子域;事先装好

使用第二种方法,浏览器第一次访问您的网站不会完全安全。但是,后续的访问将是完全安全的。

Mozilla的HSTS预加载列表示例

您可以使用安全标准等免费在线工具来验证您的网站是否正在执行HSTS。如果你担心你的浏览器支持HSTS,你可以放心,因为现在几乎所有的浏览器都支持HSTS。

所有主流浏览器都广泛支持HSTS。

HTTP 307重定向和SEO

因为307临时重定向响应显示资源已经被临时移动到新的URL,所以搜索引擎不会更新其索引来包括这个新的URL。来自原始URL的“链接流”不会被传递到新的URL。

这与301移动永久重定向相反,在301移动永久重定向中,搜索引擎更新其索引以包括新的URL,并将“链接汁”从原始URL传递到新的URL。

使用307内部重定向响应,一切都发生在浏览器级别。所以应该不会对你网站的SEO产生直接影响。然而,将你的网站添加到HSTS预加载列表可以使它加载更快更安全,这两者都可以帮助它在搜索结果中排名更高。

注意不要无意中将用户和机器人重定向到无限重定向循环,从而导致“过度重定向”错误。

何时使用307重定向

重定向可能是网站维护的一个有用的部分。然而,重要的是要注意何时、如何使用它们,以及使用哪一个。过多的URL重定向会减慢你的加载时间,损害你的用户体验(UX)和搜索引擎优化。

因此,最好的做法是小心使用它们。话虽如此,但在使用307重定向时,有一些场景是合适的。这包括当您:

更新页面上的内容

迁移到不同的内容管理系统(CMS)

切换域名

暂时关闭您的网站进行维护。

关键是只有在知道移动是暂时的情况下才使用307重定向。否则你最好使用301或者308重定向,这样你SEO中的链接权重就会从旧网址传递到新网址。

当您打算永久删除或移动页面,或者更改页面的永久链接结构时,通常最好使用301重定向。同样,当你仍然希望它们指向的页面出现在搜索引擎结果中时,最好使用301重定向。如果你想在不妨碍你的搜索引擎优化的同时,从你创建的新页面上获得访问者的反馈,这也是很有帮助的。

如何在网站上实现307临时重定向

除了了解各种类型的重定向,知道如何正确地实现和使用它们也很重要。这里有一些在你的网站上使用307重定向的关键提示。

临时重定向通过。htaccess文件

有几种不同的方法来实现重定向。在WordPress网站上,最好的方法通常是在你的。htaccess文件,这是您的主服务器配置文件。

请注意,由于这是一份如此重要的文件,对其进行任何修改都必须谨慎。我们也建议在修改这个文件之前创建一个站点的备份,特别是如果你没有太多的开发经验。

然后,您可以通过文件传输协议(FTP)客户端或主机帐户的文件管理器应用程序来访问它。通常,您可以在站点根目录的public_html文件夹中找到它:

在。htaccess文件,可以使用mod_rewrite模块来实现重定向。这看起来像这样:

# 使用临时重定向将服务页面重定向到新页面 RewriteRule “^/service$” “/about/service” [R]

有关更多信息和指导,您可能需要参考谷歌搜索中心关于创建重定向的指南。

使用插件重定向链接。

除了自己手动配置重定向,另一个选择是使用WordPress重定向解决方案,例如快速页面/发布重定向插件:

这个免费工具允许你添加301,302和307重定向到你的WordPress网站。但是,需要注意的是,它使用了所谓的“元刷新”重定向。

元刷新重定向发生在浏览器中,而不是您的Web服务器中。这意味着重定向告诉浏览器在特定的时间范围内导航到指定的URL。当您看到包含以下内容的网页时,就会发生这种情况:“如果您在5秒内没有重定向,请单击此处”。

这些类型的重定向不仅会迷惑你的访问者,而且如果使用过于频繁,还会让搜索引擎爬虫认为你的网站包含垃圾信息。因此,我们只建议在无法通过。htaccess文件(例如,如果您的Web主机不提供对它的访问)。

总结

对HTTP响应状态代码的深入理解是成为一个成功的网站所有者的重要组成部分。设置重定向可以帮助您正确执行站点维护。如果您只想暂时移动URL,我们建议您使用307重定向。

正如我们在本文中讨论的,307 redirect是一种状态代码,您可以使用它将访问者指向一个新的URL,但最终会在您完成更改或更新后将他们带回原始URL。当您不想将链接权重从旧URL传递到新URL时,最好使用此选项。

除此之外,也许你应该多看一些关于链接重定向的相关文章来加深对这一块的理解:

了解更多关于301重定向及其与SEO优化的关系

基于SEO优化应该选择301还是302重定向?

常见HTTP状态代码及其相应含义的列表

声明:

1,本站分享的资源来源于用户上传或网络分享,如有侵权请联系站长。

2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除。

3,如果你也有好的建站资源,可以投稿到本站。

4,本站提供的所有资源不包含技术服务请大家谅解!

5,如有链接无法下载,请联系站长!

6,特别声明:仅供参考学习,不提供技术支持,建议购买正版!如果发布资源侵犯了您的利益请留言告知!


创网站长资源网 » 什么是307临时重定向,什么时候需要使用?

发表回复