【发布时间】:2013-02-26 14:42:07
【问题描述】:
我目前正在讨论关于在给定资源上禁止并发 GET 请求是否构成违反 RFC 2616 的问题(尤其是 GET 方法所需的幂等性和安全属性,第 9.1 节)。
例如;如果我的服务器收到一个 获取 /data/?dataId=123456 同时两次,您认为一个或两个请求返回错误消息是违反安全性还是幂等性?
根据我的理解,RFC 规定相同的请求在再次调用时应该产生相同的结果。 然而,我还没有看到任何关于并发请求的行为是可以接受的。
我的感觉是,禁止并发 GET 访问(在给定资源上,当然不是一般规则)并不构成违反 RFC。 返回 423 响应代码,或 500(虽然不是很优雅),甚至是 429 或 420(尽管含义略有不同)似乎对我来说是可以接受的。
我想知道是否有有效的论据证明 RFC 否认这一立场。
提前致谢/致以最诚挚的问候
【问题讨论】:
-
文件共享服务每天都会执行此操作 - 一次下载一次,甚至每个 URL 仅下载一次。稍后使用的相同 URL 会产生截然不同的结果。
-
423 不正确。 420 未定义。您可以使用 429,但我不完全了解您的用例。你为什么想要阻止请求????
-
(你说得对 423)这个问题主要是反问的,但用例是针对需要访问不支持并发访问的资源的 GET 请求。我绝对可以将请求排队,直到资源被释放,但我想知道 RFC 合规性以防我决定不这样做,并且只返回一个错误代码(这是我们目前所做的,因为在我们的情况下并发访问通常不会发生)
-
(420是twitter API用来限制查询速率的响应码)
标签: http concurrency get rfc2616