因为项目中有用到过滤器和拦截器这里做一下总结:之后会不断补充~
实际开发中我们会有需求在SpringBoot 中使用filter 处理请求以及返回。比如说我们常见的跨域攻击处理、处理参数、以及设置Header返回参数、Filter实现签名认证鉴权等
所谓的跨域攻击就是:
1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题?
答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”:
1、域名相同
2、协议相同
3、端口相同
我们在具体处理的时候也可以从以上三个方面来避免跨域攻击的出现。
解决方案 : 后台代码在被请求的Servlet中添加Header设置。
response.setHeader("Access-Control-Allow-Origin","xxxx"); //允许名称为xxx的域名访问
response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE"); //允许访问的方法为POST,GET,OPTION,DELETE
response.setHeader("Access-Control-Max-Age", "3600"); //指定本次预检请求的有效期,单位为秒
response.setHeader("Access-Control-Allow-Credentials", "true"); //响应报头指示的请求的响应是否可以暴露于该页面。当true值返回时它可以被暴露
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
DataSourceAutoConfiguration.class})
@EnableConfigurationProperties
@ServletComponentScan
@EnableTransactionManagement
@EnableScheduling
@EnableCaching
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ()).addPathPatterns("/**");
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)