对于一个非AJAX请求,我应该向一个仅AJAX的URL返回什么状态码?

对于一个非AJAX请求,我应该向一个仅AJAX的URL返回什么状态码?,ajax,http,http-status-codes,Ajax,Http,Http Status Codes,如果不使用AJAX请求URL,那么应该返回什么状态代码?400?我认为403禁止是最好的 501未实现不适合,因为资源已实现,但不适合此类请求 400错误请求也不是一个好的选择,因为根据规范,这意味着“由于语法错误,服务器无法理解请求”,而不是这里的情况。我选择400错误请求,因为这意味着不重试请求 如果做不到这一点,418我是一个茶壶,只是让他们感到困惑:)我不相信你通过管理这个值真的在帮助任何人。我更喜欢在所有情况下都尝试发回有用数据的理念。然而,在我们确实需要一项政策的情况下,想象类似的情

如果不使用AJAX请求URL,那么应该返回什么状态代码?400?

我认为
403禁止
是最好的

501未实现
不适合,因为资源已实现,但不适合此类请求


400错误请求
也不是一个好的选择,因为根据规范,这意味着“由于语法错误,服务器无法理解请求”,而不是这里的情况。

我选择
400错误请求
,因为这意味着不重试请求


如果做不到这一点,
418我是一个茶壶,只是让他们感到困惑:)

我不相信你通过管理这个值真的在帮助任何人。我更喜欢在所有情况下都尝试发回有用数据的理念。然而,在我们确实需要一项政策的情况下,想象类似的情况并不难。例如,假设我们有一个可以根据mime类型返回JSON或XML的服务,如果指定了意外的mime类型,那么最好返回一个清晰的响应代码

W3

4xx代码适用于各种情况 其中客户似乎有 错误,以及案例的5xx代码 其中服务器知道 服务器出错了。这是不可能的 大体上区分这些情况,以便 区别只是信息性的

正文部分可能包含 描述人为错误的文件 可读形式。文档是MIME格式的 格式,并且只能为文本/纯文本, text/html或一种格式 在合同中规定为可接受 请求

因此很明显,响应应该是4xx,而不是客户端提供的无效请求。我会选择400个错误的请求,并确保返回的文本解释了该请求被认为是错误的原因


W3对400说:请求的语法不好,或者根本不可能满足,事实似乎确实如此。

您如何知道URL是如何被请求的?Ajax与否它只是一个URL如果HTTP_X_REQUESTED_在请求头中等于XMLHttpRequest,那么它就是一个Ajax请求。在Django中,您可以使用request.is_ajax()检查我是否希望处理非ajax请求。例如,如果有人对该URL发出标准GET请求,我想显示一个状态代码正确的错误页面。同意,这似乎是一致的看法。另见