什么'这是让Ajax应用程序知道服务器上的错误的最佳方式

What's the best way to let the Ajax app know of the errors back at server?

本文关键字:服务器 错误 方式 最佳 应用程序 Ajax 什么      更新时间:2023-09-26

嗨我正在开发一个使用Java作为服务器端语言的应用程序,对于客户端,我使用Ajax。但我对ajax应用程序还很陌生,所以我需要对我所面临的问题发表一些意见。我将Spring Security用于身份验证和授权服务,通过阅读Spring论坛,我成功地将Spring Security与Ajax应用程序集成在一起,从而可以拦截Ajax请求并采取相关操作。问题是:让ajax应用程序知道服务器上发生了错误的最佳方式是什么。到目前为止,我一直在做的是,按照惯例,我会产生随机的http 500+错误。例如,为了提示登录,我返回550,其他问题返回551等等。但我认为这不是正确的做法。处理这种情况的最佳方法是什么?

如果标准HTTP错误代码(例如401未经授权)足够丰富,请使用它们。最好不要自己编HTTP错误代码,它们是可以修复的。如果您需要返回更多的信息,您应该在响应体中返回一个更丰富的对象(序列化为JSON或XML),并在客户端解析该对象。

根据我的经验,编写自己的HTTP错误代码不是最好的方法。

  • 我知道客户端和服务器端的HTTP协议栈将非标准HTTP状态代码视为协议错误。

  • 如果非标准代码最终被处理为非AJAX响应,那么它们可能会导致令人困惑的错误消息。

同样,在回应中使用"原因短语"也可能会有问题。有些服务器端堆栈不允许您设置它,而有些客户端堆栈会丢弃它

我在响应AJAX请求时报告错误的首选方式是发送一个标准代码(例如400-BAD request),其中包含XML、JSON或纯文本响应体,提供错误的详细信息。(请务必设置响应内容类型标题…)

如果这是您的应用程序中的错误或您想要保护的黑客攻击,只需返回一个通用访问错误。不要在客户端上提供错误的详细信息,因为黑客可以使用它来更好地了解如何滥用API。无论如何,这都会让普通用户感到困惑。

如果这是正常的应用程序行为,那么最好通过允许稍后重试(如果成功的话)、重新连接或重新验证来确保正常失败。您至少应该识别出这是一个断开连接的错误还是一个不充分的权限错误,并向用户显示一个好看的解释。