Vue如何解决跨域问题详解

 更新时间:2022年02月23日 10:41:56   作者:南独酌酒nvn  
VUE访问接口的时候,很可能出现跨域请求,从而被提供接口的服务器拒绝,下面这篇文章主要给大家介绍了关于Vue如何解决跨域问题的相关资料,需要的朋友可以参考下

什么是跨域

跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。 这里列举一个经典的列子:

#协议跨域
http://a.baidu.com访问https://a.baidu.com;
#端口跨域
http://a.baidu.com:8080访问http://a.baidu.com:80;
#域名跨域
http://a.baidu.com访问http://b.baidu.com;

通常在不同服务器访问过程中可能会遇到跨域问题,也就是口头上常说的策略同源问题 CORS

出现跨越一般就是判断三个地方,http协议,请求地址,端口号,三者若有一处不相同,那么就会出现跨域,解决这个问题就要配置一个代理服务器,通过代理服务器实现跨域请求

解决跨域的情况一般就是如下图:

Vue 中配置跨域的配置在 vue.config.js 文件中添加:

配置一个的写法

module.exports = {
  devServer: {
    proxy: 'http://localhost:5000' // 配置访问的服务器地址
  }
}

配置多个的写法

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:5000', // 配置访问的服务器地址
        pathRewrite: { '^/api': '' },  // 用于将请求中的 /api 字符串替换为空, 然后访问地址就能正确访问,若不添加此行配置,那么访问地址就变成了: http://localhost:5000/api/request_url,这样的请求就会出现 404 操作
        ws: true, // 是否支持 webstocket, 默认是 true
        changeOrigin: true // 用于控制请求头中的 host 值, 默认是 ture
      },
      '/api2': {
        target: 'http://localhost:6000', // 配置访问的服务器地址
        pathRewrite: { '^/api2': '' },  // 用于将请求中的 /api2 字符串替换为空, 然后访问地址就能正确访问,若不添加此行配置,那么访问地址就变成了: http://localhost:6000/api/request_url,这样的请求就会出现 404 操作
        ws: true, // 是否支持 webstocket, 默认是 true
        changeOrigin: true // 用于控制请求头中的 host 值, 默认是 ture
      }
    }
  }
}

添加完代理服务器的相关配置,就需要通过 ajax 请求访问服务器了,一般 vue 中使用的都是 axios 库,这里就以 axios 库为例子:

安装 axios

npm i axios

使用 axios

// 引入 axios 库
import axios from 'axios'
export default {
	name: 'Student', // 组件名称
	// 组件使用的方法
	methods: {
		注释内容 `:get 请求访问 /api 前缀开头的地址,实际上访问的地址是: http://localhost:5000/request_url`
		test1() {
			axios.get('http://localhost:8080/api/request_url').then(res => {
				console.log(res.data); // 输出请求响应值内容
			});
		},
		注释内容 :`get 请求访问 /api2 前端开头的地址,实际上访问的地址是:http://localhost:6000/request_url`
		test2() {
			axios.get('http://localhost:8080/api2/request_url').then(res => {
				console.log(res.data); // 输出请求响应值内容
			})
		}
	}	
}

总结

到此这篇关于Vue如何解决跨域问题的文章就介绍到这了,更多相关Vue解决跨域问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库

    关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库

    关于Vue.js 2.0 的 Vuex 2.0你需要更新的知识库,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 一步步带你用vite简单搭建ts+vue3全家桶

    一步步带你用vite简单搭建ts+vue3全家桶

    Vue3与TS的联合是大趋势,下面这篇文章主要给大家介绍了关于用vite简单搭建ts+vue3全家桶的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • vue和react的区别及优缺点解读

    vue和react的区别及优缺点解读

    这篇文章主要介绍了vue和react的区别及优缺点说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue搭建后台系统需要注意的问题

    Vue搭建后台系统需要注意的问题

    这篇文章主要介绍了Vue搭建后台系统需要做的几点,文中给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • vue使用recorder.js实现录音功能

    vue使用recorder.js实现录音功能

    这篇文章主要为大家详细介绍了vue使用recorder.js实现录音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • vue地区选择组件教程详解

    vue地区选择组件教程详解

    这篇文章主要介绍了vue地区选择组件主要用于全国地区数据的操作,包括省,市,区三级联动,地区数据的添加和删除,本文重点给大家介绍vue地区选择组件教程详解,需要的朋友参考下吧
    2018-05-05
  • Vue多系统切换实现方案

    Vue多系统切换实现方案

    本篇文章给大家分享了关于Vue多系统切换实现的解决方案,对此有需要的朋友可以跟着参考学习下。
    2018-06-06
  • 全面解析Vue中的$nextTick

    全面解析Vue中的$nextTick

    这篇文章主要介绍了Vue中的$nextTick的相关资料,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2020-12-12
  • vue 不使用select实现下拉框功能(推荐)

    vue 不使用select实现下拉框功能(推荐)

    这篇文章主要介绍了vue 不使用select实现下拉框功能,在文章给大家提到了vue select 组件的使用与禁用,需要的朋友可以参考下
    2018-05-05
  • Vue3通过JSON渲染ElementPlus表单的流程步骤

    Vue3通过JSON渲染ElementPlus表单的流程步骤

    这篇文章主要介绍了Vue3通过JSON渲染ElementPlus表单的流程步骤,文中通过代码示例和图文给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-10-10

最新评论