Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';让Ajax应用程序知道服务器上的错误的最佳方法是什么?_Java_Javascript_Jquery_Ajax_Spring Security - Fatal编程技术网

Java 什么';让Ajax应用程序知道服务器上的错误的最佳方法是什么?

Java 什么';让Ajax应用程序知道服务器上的错误的最佳方法是什么?,java,javascript,jquery,ajax,spring-security,Java,Javascript,Jquery,Ajax,Spring Security,嗨 我正在使用Java作为服务器端语言开发一个应用程序,在客户端使用Ajax。 但是我对ajax应用程序还比较陌生,所以我需要对我所面临的问题发表一些意见。 我将Spring Security用于身份验证和授权服务,通过阅读Spring论坛,我成功地将Spring Security与Ajax应用程序集成在一起,从而可以拦截Ajax请求并采取相关措施。 问题是:让ajax应用程序知道服务器上发生了错误的最佳方法是什么。到目前为止,我一直在做的是,按照惯例,我会随机产生HTTP500+错误。EG为了

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

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

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


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

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

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

  • 如果错误消息最终被当作非AJAX响应处理,那么非标准代码可能会导致错误消息混乱

类似地,在回答中使用“原因短语”部分可能会有问题。一些服务器端堆栈不允许您设置它,而一些客户端堆栈放弃它


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

检查时,HTTP错误代码似乎是可扩展的,因此可以使用4xx范围。但是在响应体中返回特定于应用程序的信息更为标准。所有的答案基本上都是一样的。谢谢。