SpringBoot+Vue2项目解决前后端跨域方案

SpringBoot+Vue2项目解决前后端跨域方案


现实工作开发中经常会有跨域的情况,因为公司会有很多项目,也会有很多子域名,各个项目或者网站之间需要相互调用对方的资源,这样就避免不了跨域请求。

那先来说一说什么是跨域吧!
跨域:指的是从一个域名去请求另外一个域名的资源,即跨域请求!
跨域时,浏览器不能执行其他域名网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制。
跨域严格来说就是只要协议、域名、端口三者有一个不同,就被当作跨域。
同源策略:三者必须完全相同称之为同源。
在这里插入图片描述
下面介绍两种解决前后端跨域方案。

一. 前端跨域解决方案

1、vue.config.js配置如下:

const {defineConfig} = require('@vue/cli-service')
module.exports = defineConfig({
    transpileDependencies: true,
    devServer: {
    	// 设置前端页面访问端口(选填)
        host: 'localhost',
        port: '80',
        // 跨域配置
        proxy: {
            '/api': {
                target: 'http://localhost:8080',		// 后台地址
                changeOrigin: true,						// 允许跨域
                /*
                * 路径重写
				* 例:开发者工具查看网络请求URL地址是:http://localhost/api/user/pagePlus,
				* 实际访问地址是:http://localhost:8080/user/pagePlus,  因为重写了 /api
				* */
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    }
})

在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的务,loclahost),再由本地的服务器去请求真正的服务器。

2、在vue中最常用的应该就是axios了,这是一个很强大的处理ajax的库。一般我们会对axios进行封装再使用,怎么安装这里就不啰嗦了。

封装的request.js配置如下:

import axios from 'axios'

const request = axios.create({
    baseURL: '/api',
    timeout: 5000
})

request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';

    return config
}, error => {
    return Promise.reject(error)
});

request.interceptors.response.use(response => {
    let res = response.data;
    if (response.config.responseType === 'blob') {
        return res
    }
    if (typeof res === 'string') {
        res = res ? JSON.parse(res) : res
    }
    return res;
}, error => {
    console.log('err' + error)
    return Promise.reject(error)
})

export default request

最后在main.js文件中引入request:

import request from "@/utils/request";
Vue.prototype.request = request

over,这就是前端跨域的解决方案了。

再来看一下我们前端请求的代码,是不是很简洁!

this.request.delete("/user/" + id).then(res => {
        if (res.data === true) {
          ......
        } else {
          ......
        }
        this.loadData();
      })

二. 后端跨域解决方案

后端跨域解决方案也很简单啦,具体操作看我这篇博客:
SpringBoot全局跨域配置类

后端设置了跨域配置后,对axios封装的request.js任然是通用的,只需要将baseURL属性值改为后台地址就可以了。

SpringBoot+Vue2项目是一种前后端分离的开发模式,其中SpringBoot用于开发后端接口,Vue2用于开发前端页面。在这个项目中,可以使用SpringBootApplication注解来标识启动类,并通过@RestController注解来标识控制器类。\[1\] 在配置数据库时,可以在application.properties文件中添加相关配置,包括数据库驱动、URL、用户名和密码等信息。\[2\] 如果需要解决前后端跨域问题,可以在后端设置跨域配置,并将前端请求的baseURL属性值改为后台地址。这样就可以实现前后端的数据交互。\[3\] 总的来说,SpringBoot+Vue2项目是一种灵活、高效的开发模式,可以实现前后端的分离开发,并通过跨域配置实现数据的交互。 #### 引用[.reference_title] - *1* *2* [SDU项目实训——后台搭建——SpringBoot+Vue学习(二)](https://blog.csdn.net/m0_55633961/article/details/123504324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringBoot+Vue2项目解决前后端跨域方案](https://blog.csdn.net/zl5186888/article/details/126865950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值