问题标签 [controller-advice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ControllerAdvice 无法捕获从拦截器中间件抛出的异常
所以我们在java spring boot中实现了一个拦截器中间件。目的是在任何客户端应用程序(rest api 客户端)中使用此中间件并验证所有传入的 http 请求以防止任何 CSRF 攻击。我们在我们的一个休息客户端中使用这个中间件,比如 java-demo。一切正常,除非遇到无效的 url,即不存在的端点。
在这种情况下,当拦截器逻辑引发 CSRFException 时,它不会转到我们为该特定异常定义异常处理程序的 ControllerAdvice。结果,我们在邮递员中得到状态 200,而我们应该得到 http 状态代码为 403 的异常,我们将其与响应实体一起抛出。
但是当我们点击一个有效的网址时,
如果从拦截器逻辑引发异常,则 ControllerAdvice 捕获异常并抛出给客户端,这是预期的行为。
当 url 无效时,ControllerAdvice 无法捕获异常的可能原因是什么。
为了清楚起见:当无效的 url 被命中并且拦截器没有抛出任何异常时,我们在邮递员中得到 404 not found 错误。
csrf 中间件中存在的 ExceptionHandler 类代码