Vue-cli解决前端跨域问题has been blocked by CORS policy

本文介绍了前端开发中解决跨域问题的三种常见方法:CORS、JSONP和配置代理。CORS允许任何前端访问,但安全性较低;JSONP是一种非官方解决方案,适用于特定场景;配置代理则通过代理服务器转发请求,避免跨域问题。推荐使用Vue-cli的配置代理方式,通过vue.config.js设置代理规则,方便快捷。示例代码展示了如何配置和使用代理服务器来访问不同端口的资源。
摘要由CSDN通过智能技术生成

前言

解决前端跨域问题有三种方式可以实现:
1.CORS方式:
  这种方式一般和前端人员无关,需要后端人员在服务器中返回支持前端请求的相应头Access-Control-Allow-Origin,从而使得前端浏览器可以直接访问服务器。但是这种解决跨域的方式会导致任何前端都能访问到该服务器上的资源,因此存在较大的危险。
2.JSONP方式:
  JSONP解决跨域问题实际上不是一个官方所推出的方式,是程序员们为了解决跨域问题而设计出来的一种方法。其巧妙之处在于使用script标签通过CDN方式来引入需要访问的资源,从而不存在前端访问服务器的跨域问题。但是这种方式在开发中使用较少。
3.配置代理方式:
  在开发过程中,常见的解决前端跨域问题的方法是使用配置代理方式,其原理是:在前端资源的相同端口上开启一台服务器,从而前段能直接访问相同端口的服务器,前端的资源请求可以通过这台代理服务器而转发出去。而代理服务器和存储资源的服务器之间不存在跨域问题,因为服务器之间直接通过http请求访问即可。

推荐方式——配置代理方式

  配置代理方式也存在两种:其一是使用nginx反向代理方式,这种方式常见但是需要了解nginx相关知识;另一种是在Vue项目中使用vue-cli脚手架的方式来进行配置代理。我们在这使用Vue-cli方式进行配置代理服务器,十分简便好用。

vue.config.js代码如下:

module.exports = {
	//开启代理服务器(方式一)
	devServer: {
    proxy: 'http://localhost:5000'
  }, 
	//开启代理服务器(方式二)
	devServer: {
    proxy: {
      '/atguigu': {
        target: 'http://localhost:5000',
				pathRewrite:{'^/atguigu':''},
        // ws: true, //用于支持websocket
        // changeOrigin: true //用于控制请求头中的host值
      },
      '/demo': {
        target: 'http://localhost:5001',
				pathRewrite:{'^/demo':''},
        // ws: true, //用于支持websocket
        // changeOrigin: true //用于控制请求头中的host值
      }
    }
  }
}

发送资源请求的代码:

<template>
	<div>
		<button @click="getStudents">获取学生信息</button>
		<button @click="getCars">获取汽车信息</button>
	</div>
</template>

<script>
	import axios from 'axios'
	export default {
		name:'App',
		methods: {
			getStudents(){
				axios.get('http://localhost:8080/students').then(
					response => {
						console.log('请求成功了',response.data)
					},
					error => {
						console.log('请求失败了',error.message)
					}
				)
			},
			getCars(){
				axios.get('http://localhost:8080/demo/cars').then(
					response => {
						console.log('请求成功了',response.data)
					},
					error => {
						console.log('请求失败了',error.message)
					}
				)
			}
		},
	}
</script>

通过以上配置便可以将8080端口转接到5000和5001等等端口上去访问资源,并且不会产生跨域问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值