前后端分离使用VUE(跨域问题解决)

前台代码与后台代码分离

1. 后台代码删除static目录

前后端分离使用VUE(跨域问题解决)_第1张图片

2. 将static部署到nginx服务器上

  • 将static存放到一个路径下 随便存放 只要你找得着
    前后端分离使用VUE(跨域问题解决)_第2张图片

  • 打开nginx目录 找到config 文件 编辑
    前后端分离使用VUE(跨域问题解决)_第3张图片

  • 插入代码 将你的文件夹路径写上 让nginx代理静态资源 记得保存

	# windows文件服务器配置
    # 搭建前后端分离页面服务器
	server {
			listen       8094;
			server_name localhost;

			charset utf-8;

			#浏览器打开路径:localhost:8094(listen端口)/location设置的路径/文件.后缀
			location ~ /.*\.(html|htm|js|css)$ {
			#文件/图片保存在电脑的地址
			root D:\\vue\\vue01;
			}
	}
		

前后端分离使用VUE(跨域问题解决)_第4张图片

  • 启动nginx
    直接点击Nginx目录下的nginx.exe 或者 cmd运行start nginx

其他命令

  • 关闭 nginx -s stop 或者 nginx -s quit
    stop表示立即停止nginx,不保存相关信息
    quit表示正常退出nginx,并保存相关信息

  • 重启(因为改变了配置,需要重启)
    nginx -s reload
    前后端分离使用VUE(跨域问题解决)_第5张图片
    注:有时候cmd运行成功,但是电脑并没有开启nginx 要看任务管理器 有绿色图标即为启动成功
    前后端分离使用VUE(跨域问题解决)_第6张图片

  • 完成配置后就可以访问静态资源 因为资源在后台 vue axios 访问 涉及跨域问题
    前后端分离使用VUE(跨域问题解决)_第7张图片

  • vue axios需要访问后台服务器 这里涉及到跨域问题 nginx为前台解决跨域问题的第一步 文末解释跨域

  • 给后台配置一个CORS 可解决后台跨域访问问题 粘贴代码即可
    前后端分离使用VUE(跨域问题解决)_第8张图片


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 GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允许的域,不要写*,否则cookie就无法使用了
        config.addAllowedOrigin("http://localhost:8094");
        //2) 是否发送Cookie信息
        config.setAllowCredentials(true);
        //3) 允许的请求方式
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        // 4)允许的头信息
        config.addAllowedHeader("*");

        //2.添加映射路径,我们拦截一切请求
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }
}

3.前后端都解决了跨域问题 启动后台服务器 就可以访问了

注意:前台vue axios路径写法,一定要注明访问的服务器地址,这样后台cors才可以拦截
前后端分离使用VUE(跨域问题解决)_第9张图片
效果图
前后端分离使用VUE(跨域问题解决)_第10张图片

4.跨域问题

4.1什么是跨域

跨域是指跨域名的访问,以下情况都属于跨域:

跨域原因说明 示例
域名不同 www.jd.comwww.taobao.com
域名相同,端口不同 www.jd.com:8080www.jd.com:8081
二级域名不同/子域名不同 item.jd.commiaosha.jd.com
协议不同 http://jd.comhttps://jd.com
域名和ip地址 http://jd.com192.168.23.12

如果域名和端口都相同,但是请求路径不同,不属于跨域,如:

www.jd.com/item

www.jd.com/goods

而我们刚才是从file:///D:/VueWorkspace/102/goods00/Goods.html去访问http://localhost:8090/,这属于域名不同,跨域了。

4.2为什么有跨域问题?

1 浏览器的同源策略引起跨域问题

2 跨域不一定会有跨域问题。

答:a.跨域没有引起问题:

你可能感兴趣的:(vue)