使用Spring Boot,如何分别处理普通请求和ajax请求的异常
Posted
技术标签:
【中文标题】使用Spring Boot,如何分别处理普通请求和ajax请求的异常【英文标题】:Using Spring Boot, how to separately handle exception between normal request and ajax request 【发布时间】:2015-09-03 18:02:07 【问题描述】:我正在使用 Spring MVC 和 Spring Boot 实现 Java Web 应用程序。
我想创建一个自定义错误页面(对于 404、500 错误),我尝试使用此处的解决方案: https://***.com/a/27393578/2148445 它工作正常。但是,它拦截了所有 404/500 错误,甚至是我的 ajax 请求。我的 Web 应用程序基于 ajax 请求,所以当我调用 API 时,它返回自定义错误页面而不是 json 响应。
我想: 正常请求时>>转到自定义错误页面。 当ajax请求>>返回错误响应为json对象。
我尝试找到其他方法,但到目前为止我无法找到好的解决方案。
我尝试使用@ExceptionHandler
,但我的同事说它会覆盖Spring boot。
有没有办法解决这个问题?
感谢您的帮助。
【问题讨论】:
你能粘贴你的ajax监听类吗? 我觉得这有点棘手。您可以采取的最佳方法是创建一个控制器来处理错误,将HttpServletRequest
注入其中并根据请求的路径返回 JSON 或重定向到错误视图。
这似乎是相关的:***.com/questions/29703903/…
【参考方案1】:
一种解决方案是在从浏览器进行 ajax 调用时发送一个值为“XMLHttpRequest”的“X-REQUESTED-WITH”标头。
在后端,您可以检查具有给定值的此标头是否可用于确定它是否是 ajax 调用。
【讨论】:
以上是关于使用Spring Boot,如何分别处理普通请求和ajax请求的异常的主要内容,如果未能解决你的问题,请参考以下文章
runloop中的source0和source1分别处理啥时间