哪个http响应代码最好通知用户只接受api ajax和post?
例如,我有一个只允许ajax请求的控制器,这些必须是post而不是get。
因此,如果最终用户要求使用get或post使用非ajax,他们应该得到一个回复,表明这是不允许的。
这些中的任何一个都是最好的回应:
400 403 405
答案 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。