当前位置: 首页 > 知识库问答 >
问题:

HTTP 400的Spring MVC自定义消息

陈茂
2023-03-14

我有几个像下面这样的SprigMVC方法,返回一个ModelAndView或一个ResponseBody。当用户向这些缺少所需参数的URL发出请求时,他们自然会得到消息“required String parameter'id'is not present”。

从安全的角度来看,我想对用户隐藏这些详细的描述消息。因此,黑客不容易知道丢失的参数,并将得到一个400的错误,没有任何说明。这可能通过spring配置/Spring Security还是我必须手动重构我的所有方法以某种方式返回一个自定义消息。

@RequestMapping(value = "/payment", method = RequestMethod.GET)
public ModelAndView getReponse(@RequestParam(value = "id", required = true)) {

    return model;
}

@RequestMapping(value = "/status", method = RequestMethod.GET)
public @ResponseBody String getStatus(@RequestParam(value = "id", required = true) String id) {

    return "string";
}

共有1个答案

黄磊
2023-03-14

您实际需要的是MissingServletRequestParameterException的全局处理程序,它是Spring在缺少请求参数时抛出的。解决这个问题的最简单的方法是使用ControllerAdvice来处理所有控制器的问题。

import org.springframework.web.bind.MissingServletRequestParameterException;

@ControllerAdvice
class MissingServletRequestParameterExceptionHandler {
    @ExceptionHandler(MissingServletRequestParameterException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleMissingParameter() {
        return "Your custom result";
    }
}

如果您希望仅为特定控制器隐藏缺少的参数消息,只需将HandlemissingParameter方法移动到此控制器,而不创建ControllerAdvice。

 类似资料:
  • 简介 此消息 用来接收 用户自定义TOPIC消息 发送过来的事件。 消息体 ChannelMessageBean 例子 Kotlin @Subscribe(threadMode = ThreadMode.MAIN) fun onReceiveCustomMessage(customEvent: ChannelMessageBean) { // TODO } ChannelMessageB

  • 问题 如何定义NotFound消息和其他消息? 解法 import web urls = (...) app = web.application(urls, globals()) def notfound(): return web.notfound("Sorry, the page you were looking for was not found.") # You c

  • /** 自定义消息发送接口(目前只支持文本消息发送) @param chatController 聊窗实体(必须是小能SDK创建的聊窗实体NtalkerChatController类型) @param type 消息类型: 11:文本消息 12:图片消息 13:语音消息 14:视频消息 @param message 消息内容 */ NSString *str = @“自定义文本消息test”;

  • 我正在努力裁剪javax。验证。ConstraintValidator和javax。验证。根据我的需要限制ValidatorContext。我从格式错误的请求正文收到的响应消息始终采用以下形状: <代码> 此消息也以500而不是400错误请求的形式返回。我无法获得工作到解决方案来执行以下操作: 仅包括<代码> 我有以下代码: 向上面的代码发送格式错误的有效负载将导致如下消息: 我希望能够收到以下信

  • 安全测试人员声称,我应该清理返回的JSON(即转义这些符号),因为这可能会给旧的浏览器带来一些问题(即在浏览器中执行此JS代码)。 但是生成错误消息的是SpringBoot框架, 我在这里没有太多的控制权。 当然,我可以将参数定义为String,并自己进行验证,但我怀疑这是否是正确的方法。我的参数定义为Integer,我希望它保持这种方式。 做这件事最简单的方法是什么?

  • 我是一名Java编程新手(实际上已经在学习),我对如何处理不同的消息有些怀疑。 我的目标是将这些不同的消息包含在同一个类(CustomExcpse类)中,以避免在从其他类抛出新CustomExceptions的每个方法上一遍又一遍地编写相同的字符串。 到目前为止,我编码: > 一个自定义异常类,它从异常扩展而来,具有不同的消息(在示例中只有两个,但还有更多)作为Strings包含,当然还有构造函数