0

例子:

  • 我们提供一个 URL http://.../foo/download.csv
  • 网络客户端(MS office)打开上面的 URL 并尝试使用 http OPTIONS 请求访问(出于我真的不知道的原因)http://.../foo/ 。
  • 到目前为止,或应用程序返回 404,因为上述 URL 不存在(即使对于 GET 请求)。

我认为所有 OPTIONS 请求都应该得到 405。URL 是否可以通过 GET 或 POST 访问并不重要。

这是否符合 http 规范?

这是我为什么认为 405 更适合的解释:如果有 OPTIONS 请求,我不想查看路径。我不在乎路径是什么样子,应该总是有相同的答案:不允许。

到目前为止,这取决于:如果注册了 GET-view,则返回 405。否则返回 404。

更新:404 与 405

不允许使用 HTTP-Spec 405 方法

Request-URI 所标识的资源不允许使用 Request-Line 中指定的方法。响应必须包含一个 Allow 标头,其中包含所请求资源的有效方法列表。

来源:https ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6

4

1 回答 1

1

老实说,目前还不清楚为什么要它返回 405。它永远不会检查方法,因为将首先调用 404 处理程序 - 它没有要获取的视图逻辑,这就是404。这是默认且正确的行为。

我怀疑,如果您不想为它编写自定义中间件,并且坚持实现它,那么覆盖 404 处理程序将是前进的方向 - 如果调用 404 处理程序,请检查该方法并相应地返回它 - 这个虽然很乱,而且自定义中间件会更 Pythonic。

def handler404(request): 
    if request.method == 'OPTION': 
        #return your custom 405 response
    else: 
        #go on and do your regular 404. 
于 2016-12-05T12:34:09.760 回答