重定向到登录页面时正确的 HTTP 状态代码是什么?

2024-02-17

当用户未登录并尝试访问需要登录的页面时,重定向到登录页面的正确 HTTP 状态代码是什么?

我问是因为没有一个W3C 规定的 3xx 响应代码 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html seem以满足要求:

10.3.1 300多项选择

请求的资源对应于 一组表示中的任何一个, 每个都有自己特定的位置, 和代理驱动的谈判 信息(第 12 条)正在 提供以便用户(或用户 代理)可以选择首选 表示并重定向其 请求到该位置。

除非是 HEAD 请求,否则 响应应该包含一个实体 包含资源列表 特征和位置来自 用户或用户代理可以 选择最合适的一个。这 实体格式由 Content-Type 中给出的媒体类型 标头字段。取决于 的格式和功能

用户代理,选择最 可以进行适当的选择 自动地。然而,这 规范没有定义任何 此类自动选择的标准。

如果服务器有首选选择 代表,它应该包括 具体的 URI 位置字段中的表示; 用户代理可以使用位置字段 自动重定向的值。这 除非另有说明,响应是可缓存的 否则。

10.3.2 301永久移动

请求的资源已 分配一个新的永久 URI 和任何 未来对该资源的引用 应使用返回的 URI 之一。 具有链接编辑功能的客户端 应该自动重新链接 对 Request-URI 的引用之一 或更多返回的新引用 在可能的情况下由服务器执行。这 除非另有说明,响应是可缓存的 否则。

应给出新的永久 URI 通过响应中的位置字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新 URI 的超链接。

如果收到 301 状态码 对 GET 以外的请求的响应 或 HEAD,用户代理不得 自动重定向请求 除非能够得到相关部门的确认 用户,因为这可能会改变 提出请求的条件 发布。

  Note: When automatically redirecting a POST request after
  receiving a 301 status code, some existing HTTP/1.0 user agents
  will erroneously change it into a GET request.

10.3.3 找到 302

请求的资源驻留在 暂时使用不同的 URI。 由于重定向可能会改变 有时,客户应该 继续使用Request-URI 未来的请求。此回应仅 如果由 a 指示则可缓存 Cache-Control 或 Expires 标头字段。

临时 URI 应由以下给出 响应中的位置字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新 URI 的超链接。

如果收到 302 状态码 对 GET 以外的请求的响应 或 HEAD,用户代理不得 自动重定向请求 除非能够得到相关部门的确认 用户,因为这可能会改变 提出请求的条件 发布。

  Note: RFC 1945 and RFC 2068 specify that the client is not allowed
  to change the method on the redirected request.  However, most
  existing user agent implementations treat 302 as if it

是 303 响应,对位置字段值执行 GET,不管 原始请求方法。状态码 303 和 307 有 已为希望明确表明哪些服务器添加 预期客户会有什么样的反应。

10.3.4 303 查看其他

对请求的响应可以是 在不同的 URI 下找到并且应该 使用 GET 方法检索 该资源。这个方法存在 主要是为了允许输出 POST 激活的脚本来重定向 用户代理到选定的资源。这 新 URI 不是替代引用 对于最初请求的资源。 303 响应不得被缓存, 但对第二个的回应 (重定向)请求可能是 可缓存。

不同的 URI 应由以下方式给出 响应中的位置字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新 URI 的超链接。

  Note: Many pre-HTTP/1.1 user agents do not understand the 303
  status. When interoperability with such clients is a concern, the
  302 status code may be used instead, since most user agents react
  to a 302 response as described here for 303.

10.3.5 304 未修改

如果客户端执行了 有条件的 GET 请求和访问是 允许,但该文件尚未通过 修改后,服务器应该响应 与此状态代码。 304 响应不得包含 消息体,因此总是 由第一个空行终止 在标题字段之后。

响应必须包括 以下标头字段:

  - Date, unless its omission is required by section 14.18.1 If a

无时钟源服务器遵守这些 规则,代理和客户端添加 他们自己的回复日期 没有收到(已经 由 [RFC 2068] 部分指定 14.19),缓存将正确运行。

  - ETag and/or Content-Location, if the header would have been sent
    in a 200 response to the same request
  - Expires, Cache-Control, and/or Vary, if the field-value might
    differ from that sent in any previous response for the same
    variant If the conditional GET used a strong cache validator (see

第 13.3.3 节),响应应该 不包括其他实体标题。 否则(即条件 GET 使用了弱验证器),响应 不得包含其他实体标头; 这可以防止之间的不一致 缓存实体主体并更新 标头。

如果 304 响应指示实体 当前未缓存,则缓存 必须忽略响应并重复 不带条件的请求。

如果缓存使用收到的 304 响应更新缓存条目, 缓存必须更新条目以反映 中给出的任何新字段值 回复。

10.3.6 305使用代理

请求的资源必须是 通过指定的代理访问 位置字段。位置字段 给出代理的 URI。这 收件人应重复此操作 通过代理的单个请求。 305 响应必须仅由生成 原始服务器。

  Note: RFC 2068 was not clear that 305 was intended to redirect a
  single request, and to be generated by origin servers only.  Not
  observing these limitations has significant security consequences.

10.3.7 306(未使用)

306 状态码用于 先前版本的规范, 不再使用,代码是 预订的。

10.3.8 307临时重定向

请求的资源驻留在 暂时使用不同的 URI。 由于重定向可能会改变 有时,客户应该 继续使用Request-URI 未来的请求。此回应仅 如果由 a 指示则可缓存 Cache-Control 或 Expires 标头字段。

临时 URI 应由以下给出 响应中的位置字段。 除非请求方法是HEAD, 响应的实体应该 包含一个简短的超文本注释 指向新 URI 的超链接,因为 许多 HTTP/1.1 之前的用户代理没有 了解 307 状态。所以, 该注释应该包含 用户所需的信息 在新的请求上重复原来的请求 URI。

如果收到 307 状态码 对 GET 以外的请求的响应 或 HEAD,用户代理不得 自动重定向请求 除非能够得到相关部门的确认 用户,因为这可能会改变 提出请求的条件 发布。

我现在使用 302,直到我发现the正确答案。

更新及结论:

HTTP 302 更好,因为它与客户端/浏览器具有最佳兼容性。


我会说第303章 看看其他罢工>302 找到:

请求的资源暂时驻留在不同的 URI 下。自重定向以来有时可能会改变,客户端应该继续使用 Request-URI 来进行未来的请求。仅当由 Cache-Control 或 Expires 标头字段指示时,此响应才是可缓存的。

我认为最适合登录页面。我最初考虑303 see other这也同样有效。经过一番思考,我会说302 Found更合适,因为请求的资源was发现只要再经过一个页面就可以访问了。默认情况下不会缓存响应,这也很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重定向到登录页面时正确的 HTTP 状态代码是什么? 的相关文章

  • 为什么要打开重定向 URL?

    我一直在浏览 OWASP 前 10 个漏洞 以更深入地了解每种特定类型的漏洞 我已完成最后一项 未经验证的 URL 重定向 我了解这次攻击 我在 OWASP 中读到了有关此类网络钓鱼计划的内容 现在看来这一点是显而易见的 我很难理解为什么这
  • C# - 如何进行 HTTP 调用

    我想对网站进行 HTTP 调用 我只需要点击 URL 不想上传或下载任何数据 最简单 最快的方法是什么 我尝试了下面的代码 但它很慢 并且在第二次重复请求后 它只是超时 59 秒 然后恢复 WebRequest webRequest Web
  • PHP 是否有与 Java 的 RequestDispatcher.forward 等效的功能?

    在 Java 中我可以编写一个非常基本的 JSPindex jsp像这样 这样做的效果是用户请求index jsp 或者只是包含目录 假设index jsp是目录的默认文档 将会看到home action没有浏览器重定向 即 forward
  • 为什么使用 HTTP 动词?

    因为动词的目标是像 server domain getallrecords 或 server domain delete1record 或类似的 URL 而getallrecords delete1record都是专门为特定目的而设计的 为
  • 服务器返回网页 404,但页面在浏览器中显示正常 - 为什么?

    一个奇怪的网页横亘在我面前 作为一名开发人员 我必须解开这个谜团 在任何浏览器中访问网页时 一切似乎都很正常 网页按预期显示 但是当查看控制台时 服务器实际上返回了 404 状态代码 那么浏览器为什么要渲染页面呢 查看正文显示返回了有效的
  • 将旧锚链接重定向到新锚链接

    我正在彻底修改其他人为我的组织构建的网站 它最初设置为 不太好 的锚链接 其中包含空格 我已经用效果更好的新锚替换了这些锚 例子 其中一位老主播看起来像这样 course To Have哪些浏览器会幸运地转换为 course To 20Ha
  • 按照约定应返回哪些 REST PUT/POST/DELETE 调用?

    根据 REST 意识形态 PUT POST DELETE 请求的响应正文中应该包含什么 返回码呢 是HTTP OK enough 如果有的话 这种约定的原因是什么 我发现了一篇描述 POST PUT 差异的好文章 发布与放置 http ww
  • 如何禁用 HTTP 的 HSTS 标头?

    我已将以下内容插入到我网站的 htaccess 中 以便能够访问HSTS预加载列表 https hstspreload appspot com
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • 使用特定 HTTP 方法链接到页面 (DELETE)

    如何像 Rails 那样链接到页面并让浏览器使用 DELETE 方法调用它 我试过 a href DELETE ME a 但不起作用 我使用 Node js 所以我可以用它来处理 DELETE 方法 你不能 链接只会触发 GET 请求 您可
  • 在 iOS 中,http 204 响应返回空白页面,有办法阻止这种情况吗?

    以前可能有人问过这个问题 但我似乎找不到解决方案 所以如果是这种情况 我深表歉意 我正在开发一个使用express的简单节点应用程序 其中一个帖子路由返回 http 204 并发送它 下面是我的代码 router post id funct
  • 在读取正文之前拒绝 HTTP 请求

    我正在开发一个网站 用户需要上传一些非常大的文件 该网站是用 PHP 编写的 在某些情况下 我想根据标头拒绝文件 理想情况下 我想在收到标头后立即拒绝请求 而不读取正文 如果标头足以表明该文件应被拒绝 则没有理由读取 200M 的文件 此外
  • ASP.NET Core URL 重写

    我正在尝试将我的网站从 www 重定向到非 www 规则以及 http 到 https https example com https example com 在中间件中 我曾经在 web config 中进行这些重定向更改 例如
  • RestSharp RestClient的默认超时值是多少?

    任何人都知道默认超时值休息锐利 https github com restsharp 休息客户端 RestSharp 在底层使用 HttpWebRequest 它有一个默认超时 https msdn microsoft com en us
  • 在java中轮询Http服务器(重复发送http get请求)

    当对其进行 REST 调用时 我的 Web 服务器会发送一些信息 我想不断轮询该服务器 间隔5秒后重复发送HTTP GET请求 以检查返回的信息是否有任何变化 做到这一点最有效的方法是什么 您能提供一些代码示例吗 请注意 我只想开发客户端代
  • 404 标头 - HTTP 1.0 还是 1.1?

    为什么我能找到的几乎每个例子 包括这个问题 https stackoverflow com questions 437256 sending a 404 error in php大约一年前 说 404 标头应该是HTTP 1 0 404 N
  • JS 库请求的常见 HTTP 标头是什么?

    使用JavaScript 框架原型 http www prototypejs org 我注意到 Ajax 请求通过一个名为X Requested With 其他 JavaScript 库 如 jQuery dojo 和 YUI 是否会向其
  • HTTP Header Key 可以重复吗?

    在 JAVA HttpUrlConnection 中 请求 Header 设置的主要逻辑代码如下 public synchronized void set String k String v for int i nkeys i gt 0 i
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • 从 PCAP 嗅探重建数据

    我试图通过 libpcap 嗅探 HTTP 数据 并在处理 TCP 有效负载后获取所有 http 内容 标头 有效负载 根据我的讨论编写 http 嗅探器 或任何其他应用程序级嗅探器 https stackoverflow com ques

随机推荐

  • 目录级别 web.config 中的 Asp.net HttpModule

    我创建了一个自定义 http 模块 并希望将此模块添加到 Web 配置中 Web应用程序是一个包含多个 子应用程序 的项目 子应用程序只是一个文件夹 在该文件夹中它有自己的 web config 我这样做是为了让每个应用程序都有自己的应用程
  • 如何计算文件中字符串的出现次数?

    仅以这段代码为例 假装它是一个 HTML 文本文件 如果我想知道该文件的总次数echo出现了 我该如何使用 bash 来做到这一点 new user echo Preparing to add a new user sleep 2 addu
  • Facebook Php SDK - getUser() 始终返回 0

    我阅读了该论坛上的所有主题 但找不到解决方案 我使用 facebook 的最后一个 Php SDK v3 2 2 所以我用了这个 start fb facebook new Facebook array appId gt fb app id
  • Laravel:高级搜索表单查询

    我有一个高级搜索表单 可以使用 Laravel 从数据库中过滤结果 数据已正确过滤 但我要求用户能够使用相同的文本框 以高级形式 按名字或姓氏进行过滤 我尝试 orWhere 确保它用名字或姓氏过滤名称字段 但 orWhere 不考虑其他过
  • AngularJS 在 HTML 中留下注释:是否可以删除它们?

    有谁知道是否可以删除 html 代码中留下的角度注释 例如 如果我使用 ngRepeat 并且没有可重复的项目 AngularJS 会留下以下内容 此评论的结果是element嵌入执行者ngRepeat 看起来好像是一直在发生 https
  • 默认共享首选项使用的文件名是什么?

    安卓备份服务requires http developer android com guide topics data backup html SharedPreferences用于备份共享首选项的文件名 public static fin
  • 如何在数据框列表上使用 devtools::use_data?

    我有一系列数据框 我想将它们保存为包中的单独 rda 文件 我可以用devtools use data my df1 my df2 但我没有每个数据帧的命名对象 它们都存储在一个大列表中 我想要做的是为每个列表元素调用 use data 并
  • 如何从我的代码中删除重复项

    我有两个类似的方法 其中一个打印一些东西 其中一个保存一些东西 正如你所看到的 有很多重复的代码 我应该如何重构它并删除这种重复 public static void printSomething List
  • 在玩笑中模拟节点模块中的特定类

    我想嘲笑Socket类来自net节点模块 Docs https nodejs org api net html net class net socket 我有一堂课看起来像这样 import Socket from net class Fo
  • 在浏览器上通过php运行python脚本

    我有一个简单的 python 脚本 阿努巴哈 py usr bin env python coding UTF 8 enable debugging import cgitb import pandas cgitb enable print
  • 将新项目动态添加到 IQueryable 硬编码假存储库

    在使用真正的数据库之前构建应用程序 为了让事情正常工作 我可以首先使用硬编码列表作为假的内存存储库 public class FakeProductsRepository private static IQueryable
  • RecyclerView 项目不填充宽度

    我设计了一个带有地图片段和recyclerView的布局 每个recyclerView项目都是cardview 我已经指定给出xml布局 问题是 RecyclerView 项目不填充屏幕宽度 img here https i stack i
  • Scrapy图片下载如何使用自定义文件名

    For my scrapy http doc scrapy org index html我目前正在使用的项目图片管道 http doc scrapy org topics images html scrapy contrib pipelin
  • 防止小部件填充 Flutter 中扩展的祖先

    我如何保留一个RaisedButton从扩大到填补Expanded包含它 我想创建三列 其宽度与可用空间成比例 但我希望每列中的子项为其自然大小 而不消耗其父项的整个宽度Expanded Widget controls BuildConte
  • 如何将多部分表单数据从jsp发送到Web服务?

    我正在尝试为我的网站创建一个注册页面 当用户将数据提交到signup jsp时 我想使用 application x www form urlencoded 将此数据发送到我的Web服务 我怎样才能在JSP中做到这一点 尝试了以下代码 但这
  • 如何将字符串从函数传递到主函数?

    我尝试寻找解决方案 但未能找到 是否可以返回字符串 我想将一个字符串从下面的函数传递回 main 我想通过listofdeatils string 这是我的代码 include
  • 如何使用 Fetch 发布 x-www-form-urlencoded 请求?

    我有一些参数想要以表单编码的方式 POST 到我的服务器 userName email protected cdn cgi l email protection password Password grant type password 我
  • 如何链接winsock.lib?

    在我的 C 课程中 我使用套接字 我在链接时遇到一些错误 因为在我看来 库 Winsock lib 丢失了 我包括这些 ifdef WIN32 include
  • Pro JavaScript 程序员面试问题(含答案)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 重定向到登录页面时正确的 HTTP 状态代码是什么?

    当用户未登录并尝试访问需要登录的页面时 重定向到登录页面的正确 HTTP 状态代码是什么 我问是因为没有一个W3C 规定的 3xx 响应代码 http www w3 org Protocols rfc2616 rfc2616 sec10 h