三.Springboot配置跨域
时间: 2022-02-17 06:23:02
来源:网络
作者:自由
分类:java框架
简介:
Springboot配置跨域有很多种方式,今天我们来看一下有哪几种方式,第一种方法还是比较常见的。 一.过滤器进行全局配置统一跨域配置方法 使用过滤器和拦截器方法来统一配置跨域请求性能是差不多,方便的地方是在这一个方法统一配置之后,就可以方便的使用后台方法了,但是也有个缺点,如果你不是设置为私有的方法,在controller里能够看到的代码在服务器外部都可以被访问到。
Springboot配置跨域有很多种方式,今天我们来看一下有哪几种方式,第一种方法还是比较常见的。
一.过滤器进行全局配置统一跨域配置方法
使用过滤器和拦截器方法来统一配置跨域请求性能是差不多,方便的地方是在这一个方法统一配置之后,就可以方便的使用后台方法了,但是也有个缺点,如果你不是设置为私有的方法,在controller里能够看到的代码在服务器外部都可以被访问到。
package com.tms.tblog.infrastructure.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/***
* 配置跨域
*/
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 1允许任何域名使用
corsConfiguration.addAllowedOrigin("*");
// 2允许任何头
corsConfiguration.addAllowedHeader("*");
// 3允许任何方法(post、get等)
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
}
二.使用注解@CrossOrigin 可以实现单个Controller类跨域访问或者单个方法跨域
package com.ten.ms.tmsframework.sys.controller;
import java.io.File;
import java.io.FileOutputStream;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 测试跨域
*/
@CrossOrigin
@RestController
@RequestMapping("/test/test")
public class TestController {
@Resource
private testService testService;
@RequestMapping(value = "/gettestList", method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public boolean gettestList(@RequestBody testPageInvo testPageInvo) {
return true;
}
}
三.拦截器进行全局配置统一跨域配置方法
使用拦截器来配置跨域,好像WebMvcConfigurerAdapter这个类有些方法已经过时了,这个还是尽量别用了,用不好再出问题了。
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Value("${file.staticAccessPath}")
private String staticAccessPath;
@Value("${file.uploadFolder}")
private String uploadFolder;
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedHeaders("*")
.allowedOrigins("*")
.allowedMethods("*");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/upload/**").addResourceLocations("file:" + "upload");
super.addResourceHandlers(registry);
}
/**
* 用于处理编码问题
*
* @return
*/
@Bean
public Filter characterEncodingFilter() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return characterEncodingFilter;
}
}
标签:SpringBoot框架
文章声明
版权声明:本文为作者原创,仅用于本站访客学习、研究和交流目的,未经授权禁止转载
本文标题:
三.Springboot配置跨域
了解
作者
一个90后草根站长!13年入行。一直潜心研究技术,一边工作一边积累经验,分享一些个人后端技术(java、python、c#、php等),以及前端相关等心得。
站长
推荐
友情
链接