如何在 Spring Boot 中明确检查请求内容类型是不是与实际内容匹配?
Posted
技术标签:
【中文标题】如何在 Spring Boot 中明确检查请求内容类型是不是与实际内容匹配?【英文标题】:How can i explicitly check request content-type is matching with actual content in Spring boot?如何在 Spring Boot 中明确检查请求内容类型是否与实际内容匹配? 【发布时间】:2021-07-10 12:14:12 【问题描述】:我想验证我的请求内容类型是否与我的请求正文匹配? 我正在尝试实施 OWASP Rest 安全标准。
上面写着:
13.2.5 验证 REST 服务是否明确检查传入的 Content-Type 是否为预期的,例如 application/XML 或 application/JSON。
在下图中,内容类型是 JSON,但请求是 XML。仍然可以正常工作。
我的控制器代码:-
@RestController
public class TestController
@PostMapping(path="/hello",consumes = "application/json")
public Map<String,String> hello(Master ecm)
Map<String,String> m=new HashMap<>() ;
m.put("message", "hello!");
return m;
【问题讨论】:
【参考方案1】:Spring 注释为此提供了一个特定的属性。它被称为消耗。
这是一个例子
@PostMapping(consumes = MediaType.SELECT_TYPE_HERE)
具体例子
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
【讨论】:
我知道消费和生产,但是如果我在请求中将内容类型作为应用程序/XML 发送并且我的请求正文是 JSON 格式,那么检查我如何实现它?跨度> @tusharwason 从春季开始就已经为您准备好了。它将根据您在consumes
和produces
上提供的信息自动提供正确的message body reader
或message body writer
来解析请求或响应。如果 message body reader
或 message body writer
失败了,你就知道有些事情搞砸了
谢谢,@Boug,只是想知道 Sails js 中是否也有相同的功能?
你能再看看这个问题吗?我已经用图像和代码更新了它。以上是关于如何在 Spring Boot 中明确检查请求内容类型是不是与实际内容匹配?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中禁用或覆盖 RequestCacheAwareFilter
如何在 Spring Boot 2 中使用内容协商建立自定义 xml 序列化