纠正错误请求类型的响应代码

时间:2013-06-05 17:42:32

标签: ajax http

哪个http响应代码最好通知用户只接受api ajax和post?

例如,我有一个只允许ajax请求的控制器,这些必须是post而不是get。

因此,如果最终用户要求使用get或post使用非ajax,他们应该得到一个回复​​,表明这是不允许的。

这些中的任何一个都是最好的回应:

400 403 405

2 个答案:

答案 0 :(得分:1)

400 - 错误请求,405 - 不允许方法

我认为你的是,403是禁止的,关于访问权限,而不是格式或方法。错误请求可以是禁止参数的组合

答案 1 :(得分:1)

HTTP没有状态代码来区分由XmlHttpRequest(您称之为AJAX)发起的请求和由任何其他HTTP客户端或直接由浏览器发出的请求。

我想通过非ajax请求你的意思是通过将URL放入浏览器(或通过点击链接)直接提出请求。这意味着浏览器执行GET请求。

HTTP允许您为特定资源指定一组允许的HTTP方法。

要完成您的用例,您只需要状态代码,允许您指定只允许POST方法。

405 - 不允许使用方法

  

请求行中指定的方法不允许使用   Request-URI标识的资源。响应必须包括一个   允许包含所请求的有效方法列表的标头   资源。   http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.6

实际上,这意味着您的服务器将为GET,PUT,DELETE方法返回405。