# 设置跨域配置实现前后端联调
前端不是我们的强项,所以这里准备好了前端代码,只需要部署起来,就可以前后联调了。
在现阶段,使用 tomcat 方式部署前端代码,后续会用 nginx 来部署
# tomcat 部署前端代码
前端代码在练习项目的 front/foodie-shop/
目录下,复制到 tomcat 的 webapps 目录下,启动后就可以访问到了
http://localhost:8080/foodie-shop/
整个配置在 js/app.js
中,以 window.app={}
方式直接挂载到 window 对象上的。
更换里面的 serverUrl: "http://localhost:8088",
为我们后端服务地址,打开注册页面,就会报错,控制台提示跨域
Access to XMLHttpRequest at 'http://localhost:8088/passport/usernameIsExist?username=admin' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
1
# 后端跨域配置
package cn.mrcode.foodiedev.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;
/**
* 跨域配置
*
* @author mrcode
* @date 2021/2/13 16:27
*/
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
// 设置运行跨域的地址,也可以使用 * 代替允许所有地址
config.addAllowedOrigin("http://localhost:8080");
// 是否运行携带 cookie 相关信息
// 在前端也有的框架可以配置这一样,前端是否允许跨域的时候携带:axios.defaults.withCredentials = true;
config.setAllowCredentials(true);
// 允许访问所有的 http 请求方式,如 get、post
config.addAllowedMethod("*");
config.addAllowedHeader("*");
// 为 url 添加映射路径
// 允许所有路径使用该配置
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37