1

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

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

因此,如果最终用户要使用 get 请求或使用非 ajax 发布,他们应该得到响应以表明这是不允许的。

这些中的任何一个都是对此的最佳回应:

400 403 405

4

2 回答 2

1

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

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

于 2013-06-05T17:46:48.553 回答
1

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

我猜非ajax请求是指通过将URL放入浏览器(或单击链接)直接发出的请求。这意味着浏览器执行 GET 请求。

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

为了满足您的用例,您只需要状态代码,它允许您指定只允许 POST 方法。

405 - 方法不允许

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

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

于 2013-06-05T19:03:59.573 回答