1. 程式人生 > 其它 >springboot配置允許跨域請求

springboot配置允許跨域請求

1、處理個別controller,在controller上使用@CrossOrigin註解即可

@RestController
@RequestMapping("/api")
public class SysController {
@CrossOrigin
@GetMapping("/systime")
public ApiResult sysTime() {
  try {
List<SysTimeVO> sysTimeVOList = sysService.querySysTime();
return new ApiResult()
.setSuccess(true)

......

2、全域性配置,配置WebMvcConfigurer

@Configuration
public class WebConfig implements WebMvcConfigurer {

// 設定允許跨域請求

@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/**")

// .allowedOrigins("http://yyy.com", "http://xxx.com") //
// 允許跨域的域名
.allowedOriginPatterns("*") // 允許所有域
.allowedMethods("*") // 允許任何方法(post、get等)
.allowedHeaders("*") // 允許任何請求頭
.allowCredentials(true) // 允許證書、cookie
.exposedHeaders(HttpHeaders.SET_COOKIE)

.maxAge(3600L); // maxAge(3600)表明在3600秒內,不需要再發送預檢驗請求,可以快取該結果
}
};
}
}

3、測試

瀏覽器開啟百度,F12除錯模式,在console中貼上如下js程式碼回車:

var token= "LtSFVqKxvpS1nPARxS2lpUs2Q2IpGstidMrS8zMhNV3rT7RKnhLN6d2FFirkVEzVIeexgEHgI/PtnynGqjZlyGkJa4+zYIXxtDMoK/N+AB6wtsskYXereH3AR8kWErwIRvx+UOFveH3dgmdw1347SYjbL/ilGKX5xkoZCbfb1f0=,LZkg22zbNsUoHAgAUapeBn541X5OHUK7rLVNHsHWDM/BA4DCIP1f/3Bnu4GAElQU6cds/0fg9Li5cSPHe8pyhr1Ii/TNcUYxqHMf9bHyD6ugwOFTfvlmtp6RDopVrpG24RSjJbWy2kUOOjjk5uv6FUTmbrSTVoBEzAXYKZMM2m4=,R4QeD2psvrTr8tkBTjnnfUBw+YR4di+GToGjWYeR7qZk9hldUVLlZUsEEPWjtBpz+UURVmplIn5WM9Ge29ft5aS4oKDdPlIH8kWNIs9Y3r9TgH3MnSUTGrgayaNniY9Ji5wNZiZ9cE2CFzlxoyuZxOcSVfOxUw70ty0ukLVM/78=";
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://localhost:8080/api/systime');
xhr.setRequestHeader("x-access-token",token);
xhr.send(null);
xhr.onload = function(e) {
var xhr = e.target;
console.log(xhr.responseText);
}

不出現跨域錯誤即可。