跨域含义:前端代码放在一个tomcate服务器里面,后端代码放在一个tomcat服务器里面,每个服务器都需要一个端口号,两个端口号不能很好的统一起来访问
解决方法:可以在后端解决,也可以放在前端解决,前端解决是要放在nginx里面访问的
这里面主要讲解后端解决方式
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
// 这是要解决跨域问题(全局配置类)
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("http://locathost")
.allowedMethods("GET","POST","PUT","DELETE","OPTIONS")
.allowCredentials(true)
.maxAge(3600);
}
}
可以在后端里面创建一个专门的util工具类,在里面专门解决跨域问题的代码
本方式就是按照此种方式来进行
说明:配置类要继承WebMvcConfigurerAdapter ,在该方法下面有一个addCorsMappings方法要自己配置
allowedOriginPatterns:允许要访问的路径
allowedMethods:允许访问的方式,主要是五类,GET POST PUT DELETE 以及OPTIONS
allowCredentials:表示是否携带token的值,设置为允许
maxAge:允许最大的访问时间
最后在自己的controller上面添加@CrossOrigin(“http://localhost:8080”)
@RestController
@CrossOrigin("http://localhost:8080")
public class LoginController {
@RequestMapping("/login")
public String login(@RequestBody User user){
System.out.println("user:"+user);
return "login";
}
}