赞
踩
测试接口发送请求时后端报错:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected end-of-input: expected close marker for Object (start marker at [Source: (PushbackInputStream); line: 1, column: 1]); nested exception is com.fasterxml.jackson…
出现这个错误的时候postman传的参数格式是这样子的:
后端代码接收参数是:
因为其实这个接口传送的方式是Form表单方式的,而且使用到了@ApiImplicitParam,若有多个参数的话使用@ApiImplicition进行包裹,接收x-www-form-urlencoded类型的关键点就在于@ApiImplicitParam。免去了使用@RequestBody在写一个接收类的繁琐步骤,加上@ApiImplicitParam之后直接接收即可。Form表单方式在Body选项卡中选择x-www-form-urlencoded格式,然后在键值对中填写参数,例如:
name=John
age=30
有关x-www-form-urlencoded格式和json格式的区别,请参考博文
postman发送请求body变成x-www-form-urlencoded格式,详情查看链接: 详情
后端接收方式修改为ModelAttribute
如果报错XssHttpServletRequestWrapper 接口不符合XSS规则时,也就是你发送的参数是html标签的时候会被认为是XSS攻击,在跨站脚本(XSS)攻击中,攻击者可以在受害者的浏览器中执行恶意脚本。这种攻击通常是通过在网页中插入恶意代码 (JavaScript) 来完成的。攻击者在使用攻击后一般能够:
如果被攻击的用户在应用程序中具有更高的权限。攻击者可以完全控制应用程序,并破坏所有用户及其数据。
常见的 XSS 攻击主要有三种:存储型 XSS 攻击,反射型 XSS 攻击和 DOM-based 型 XSS 攻击。
所以避免 XSS 攻击最有效的办法就是对用户输入的数据进行转义,然后存储到数据库里面。等到视图层渲染 HTML 页面的时候。转义后的文字是不会被当做 JavaScript 执行的,这就可以抵御 XSS攻击。
即在web配置文件中配置XssFilter
${ms.xss.filterUrl}是在appclication.yml配置文件中设置的
webconfig文件中
//XSS过滤器 @Bean public FilterRegistrationBean xssFilterRegistration(@Value("${ms.xss.xssEnable:false}") boolean xssEnable, @Value("${ms.xss.filterUrl}") String filterUrl, @Value("${ms.xss.excludeUrl}") String excludeUrl) { XSSEscapeFilter xssFilter = new XSSEscapeFilter(); Map<String, String> initParameters = new HashMap(); FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setName("XSSFilter"); registration.addUrlPatterns(new String[]{"/*"}); registration.setOrder(-2147483648); xssFilter.includes.add("/**"); xssFilter.excludes.add(MSProperties.manager.path + "/**"); if (filterUrl != null && StrUtil.isNotBlank(filterUrl.toString())) { xssFilter.includes.addAll(Arrays.asList(filterUrl.toString().split(","))); } if (excludeUrl != null && StrUtil.isNotBlank(excludeUrl.toString())) { xssFilter.excludes.addAll(Arrays.asList(excludeUrl.toString().split(","))); } initParameters.put("isIncludeRichText", "false"); registration.setInitParameters(initParameters); registration.setFilter(xssFilter); registration.setEnabled(xssEnable); return registration; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。