当前位置: 首页 > news >正文

前后端数据交互设计到的跨域问题

前后端分离项目的跨域问题及解决办法

一、跨域简述
1、问题描述

这里前端vue项目的端口号为9000,后端springboot项目的端口号为8080
在这里插入图片描述

2、什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

当前页面url被请求页面url是否跨域原因
http://www.demo.com/http://www.demo.com/index.html同源(协议、域名、端口号相同)
http://www.demo.com/https://www.demo.com/协议不同(http/https)
http://www.demo.com/http://www.study.com/主域名不同(demo/study)
http://www.demo.com/http://test.demo.com/子域名不同(www/test)
http://www.demo.com:8080/http://www.demo.com:8081/端口号不同(8080/8081)
3、出现跨域问题的原因

跨域问题是出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。

二、解决办法

一,在后端解决的方法:

在Sprigboot 的controler层面解决的方式就是
在相对应的解决方法上面加上注解  @CrossOrigin

image-20240715103101828

(下面的解决方法是收集的,没有去实验过。可以解决的可以在下面留言)

1、第一种解决办法:后端配置跨域(spring boot设置方式)

第一步:在后端的WebMvcConfig配置类中进行配置

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {/*** 跨域配置*       前后端分离必须配置,出现跨域之后前端无法访问后端接口* @param registry*/@Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许跨域访问资源定义: /rest/ 所有资源registry.addMapping(GlobalConstant.REST_URL_PREFIX +"/**")// 只允许本地的指定端口访问
//                .allowedOrigins("http://localhost:8080");
//                // 允许发送Cookie.allowCredentials(true);
//                // 允许所有方法
//                .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD");}
}
1234567891011121314151617181920

第二步:在vue项目src目录下的http包中的config.js进行配置携带凭证(cookie)
在这里插入图片描述

注意:这里是因为我需要前端发送凭证(cookie)所以要配两步;如果不需要携带cookie,可以将第二步忽略,并且将第一步中的allowCredentials(true);注释掉。

2、第二种解决办法:前端配置代理(vue项目)

第一步:在config/index.js 文件,配置proxyTable
在这里插入图片描述

proxyTable: {'/api': {target: 'http://127.0.0.1:8080', //  请求后台的真实路径,这里是我本地启动的一个后台项目changeOrigin: true, //pathRewrite: {'^/api': '' // 重写路径}},},
123456789

第二步:在config/dev.env.js文件中加上一句
在这里插入图片描述

module.exports = merge(prodEnv, {NODE_ENV: '"development"',API: '"/api"' // 加入这一句
})
1234

因为这里我配的是全局路径,所以还要在global.js里配置全局路径
在这里插入图片描述

export const baseUrl = process.env.API

全局路径
[外链图片转存中…(img-GLQCIvRt-1721010762474)]

export const baseUrl = process.env.API

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 水利行业的智慧转型之路:分析智慧水利的核心要素与优势,展望其在提升水资源利用效率、保障水安全方面的广阔前景
  • SpringMVC注解全解析:构建高效Web应用的终极指南 (下)
  • jmeter做接口压力测试_jmeter接口性能测试
  • Qt5离线安装包无法下载问题解决办法
  • zookeeper+kafka消息队列集群部署
  • 使用 ABBYY FineReader PDF 15 在创建或转换 PDF 时自动生成书签
  • 【linux】服务器重装系统之系统盘写入准备
  • 爬虫案例(读书网)(下)
  • STM32 GPIO的工作原理
  • LLaMA-Factory
  • 【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)
  • Java 实现单例模式的几种方法
  • Lua 数组
  • Zookeeper之CAP理论及分布式一致性算法
  • Python酷库之旅-第三方库Pandas(024)
  • 【EOS】Cleos基础
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • C++11: atomic 头文件
  • ES6系列(二)变量的解构赋值
  • JavaScript 一些 DOM 的知识点
  • JavaScript类型识别
  • java中具有继承关系的类及其对象初始化顺序
  • JDK 6和JDK 7中的substring()方法
  • JSDuck 与 AngularJS 融合技巧
  • Koa2 之文件上传下载
  • ng6--错误信息小结(持续更新)
  • Puppeteer:浏览器控制器
  • Web设计流程优化:网页效果图设计新思路
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于web的全景—— Pannellum小试
  • 近期前端发展计划
  • 聊聊hikari连接池的leakDetectionThreshold
  • 码农张的Bug人生 - 见面之礼
  • 山寨一个 Promise
  • 删除表内多余的重复数据
  • 通过几道题目学习二叉搜索树
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 1.Ext JS 建立web开发工程
  • gunicorn工作原理
  • 阿里云服务器购买完整流程
  • 积累各种好的链接
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #、%和$符号在OGNL表达式中经常出现
  • #《AI中文版》V3 第 1 章 概述
  • #565. 查找之大编号
  • ${factoryList }后面有空格不影响
  • (7) cmake 编译C++程序(二)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (TOJ2804)Even? Odd?
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (zz)子曾经曰过:先有司,赦小过,举贤才