vue解决跨域问题

跨域是什么

跨域问题的出现是因为浏览器的同源策略问题。所谓同源就是必须有以下三个相同点:协议相同、主机相同、端口相同。如果其中有一项不同,即出现非同源请求,就会产生跨域。当我们请求一个接口的时候,出现如:Access-Control-Allow-Origin 字眼的时候说明请求跨域了

同源策略不是服务器行为,而是浏览器的行为,服务器会正常响应请求,但是如果不同源会被浏览器拦截

如何解决跨域

1、CROS

CORS是一种由W3C制定的标准,可以让服务器决定是否允许跨域访问。我们可以在服务器端做一些配置,让服务器支持CORS

  • CROS是 Cross-Origin Resource Sharing的缩写,翻译过来就是跨域资源共享的意思。它由一系列传输的HTTP头组成,这些HTTP头会决定浏览器是否阻止前端 JavaScript代码获取跨域请求的响应。
  • CORS的实现比较简单方便,只需要增加一些 HTTP头,让服务器能声明允许的访问来源。只要后端实现了 CROS就实现了跨域。

2、Proxy(代理)

  • 通过启动本地服务器进行代理转发目标服务器。而跨域只针对于浏览器,对于node服务发出的请求是不会出来跨域的,从而解决了跨域的问题。
  • 在vue.config.js文件

1、可以配置多个不同的proxy(当项目中有不同的接口地址时很适合)

javascript 复制代码
devServer: {
    proxy: {
      '/api': {//代理标识,一般是每个接口前的相同部分
        target: 'http://23.15.11.15:8000', // 这里写的是访问接口的域名和端口号
        changeOrigin: true, // 允许跨域请求
        pathRewrite: { // 重写路径,替换请求地址中的指定路径
          '^/api': '/user'
        }
      },
      '/login': {
		 target: 'http://23.15.11.15:8000',
		 changeOrigin: true,
		 pathRewrite:{
		   '^/login':''  //替换成空
		 }
	   }
    }
  },

示例:

2、对所有接口都代理

javascript 复制代码
devServer: {
 proxy: 'http:/www.ljc.com'
}

示例:

如果都配置完成之后,但是仍旧不生效,就像是项目压根没走proxp一样,那么就是项目中已经配置过baseURL了,找到并注释掉再试试,一般会在request.js文件中。

当然,还存在一种情况就是,在外网跨域没有问题,随便跨域,而如果把前后端项目都部署到内网去,就完了,怎么配置都不行,始终爆跨域问题,嗯~~,思索良久未找到解决方案,最终把前端项目打包放到后端项目中,不再分别部署,齐活。成功部署!!!好,好,好,这样玩是吧!!!

相关推荐
清秋26 分钟前
全网最全 ECMAScript 攻略( 更新至 ES2026)
前端·javascript·编程语言
Cao_Ron43 分钟前
用 SVG image symbol 画 ECharts graph 圆形节点
前端
hxy06011 小时前
React-Call让你的React组件像异步函数一样调用
前端·react.js
Hilaku1 小时前
为什么 AI 写前端时,总是优先选择 React,而不是 Vue?
前端·javascript·程序员
京东云开发者1 小时前
GPT-5.6、ChatGPT Work 与 Codex 更新食用指南
前端
Cao_Ron1 小时前
用 ECharts graph 画出卡片式矩形节点
前端
skiyee1 小时前
换个底座的 Wot Starter 居然让 AI 更懂项目!
前端·ai编程
anyup1 小时前
这一套绝了!AI 大模型写故事,星云 SDK 驱动 3D 数字人实时演绎
前端·人工智能·aigc
耀耀切克闹灬2 小时前
短链跳转
前端
孟陬2 小时前
高质量全方位的 AI 工具 sse-stuntman — Mock SSE 接口
前端·node.js·openai