当前位置: 首页 > 面试题库 >

应该使用什么http状态代码来告诉客户端会话已超时?

南门新荣
2023-03-14
问题内容

在一个网页中,它使用YUI连接管理器/数据源将AJAX请求发送到服务器,如果会话(其中包含有关用户是否已通过身份验证的信息)已经超时,则那些只能通过身份验证查看的ajax响应用户应返回一个http状态码,告诉客户端会话已超时,然后客户端要么将其重定向到登录页面,要么询问他是否要扩展会话。

我的问题是,在这种情况下,哪种HTTP状态代码最适合告诉客户端会话已超时?

Wiki的HTTP状态代码列表


问题答案:

我所能建议的最好是带有WWW-Authenticate标头的HTTP 401状态代码。

403 请求的问题在于RFC
2616
指出“授权无济于事,不应重复该请求。”
(即,无论您是否通过身份验证,永远都不会访问该资源)。

401 请求的问题是它指出它们“必须包括WWW-Authenticate标头字段”。正如有人指出的那样,在WWW-
Authenticate标头中使用自定义值似乎没有违反规范。

我在RFC 2617中看不到任何原因,为什么HTTP
401状态与这样的自定义WWW-Authenticate标头结合在一起是不可行的:

WWW-Authenticate: MyAuthScheme realm="http://example.com"

该OAuth规范实际上似乎只做这一点,因为他们推荐这个(虽然他们使我想起了RFC的奇解释):

WWW-Authenticate: OAuth realm="http://server.example.com/"

RFC似乎没有对此进行专门的制裁,但是我实际上看不到它被它禁止了(它似乎与任何“必须”,“不得”,“应该”或“不应”条件都没有冲突)。

我希望对于超时和CSRF令牌无效之类的问题,有一个更具体的HTTP状态代码,这样更清楚了。



 类似资料:
  • 有状态会话bean定义如下: 无状态会话bean无状态会话bean不维护与客户端的会话状态。当客户机调用无状态bean的方法时,该bean的实例变量可能包含特定于该客户机的状态,但仅限于调用期间。当方法完成时,客户端特定状态不应保留。然而,客户端可能会更改池化无状态bean中实例变量的状态,并且此状态将保留到下一次调用池化无状态bean时。除了在方法调用期间,无状态bean的所有实例都是等效的,允

  • 问题内容: 有状态会话bean和HTTP会话之间有什么关系吗?我们将需要有状态会话Bean的用例是什么,而HTTP会话需要哪些用例。我可以将有状态会话Bean公开为静态Web服务吗? 问题答案: HTTP是一种无状态协议, 这意味着 它是服务器和客户端之间的实际传输协议- 是“无状态的, 因为它在调用之间不记得任何东西。 现在,首先阅读一下什么是HTTPSession和什么是Session Bea

  • 我在HAproxy和客户端流式rpc java maven后面有一个grpc Nodejs服务器。 当我运行java客户端时,它返回一个错误: 伊奥。grpc。StatusRuntimeException:不可用:HTTP状态代码503无效内容类型:文本/html标题:元数据(:status=503,cache control=no cache,content type=text/html)数据-

  • 问题内容: 我正在学习EJB3,只是好奇何时可以方便地使用SFSB?当SFSB确实可以轻松解决一些复杂问题时,我找不到任何很好的示例。 实际上,我看到SLSB可以用作Web服务,这很方便。但我不知道何时使用SFSB。我只看到它的问题,因为我们应该学习一些有关它的知识,我们应该编写由批注组成的代码,其内容要少于完全注释,我们应该使用烦人的查找方法……而我们得到的任何回报都没有。 例如,我们不能使用S

  • 我正在使用Apache HTTP客户端联系外部服务。这项服务可能需要几个小时(如果不是更长的话)才能产生响应。我尝试了一些不同的方法,但要么以套接字结束,要么以读取超时结束。我刚刚尝试使用RequestConfig将套接字和连接超时设置为0,根据文档,这应该是无限的,但请求总是在1小时后返回。有什么想法吗?