跨域出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port);
报错信息:
即是说不能发送跨域请求。由8000端口到7001端口。
解决方案:
一般解决跨域问题都是由后端解决。一般上线的项目有nginx来解决,但是在windows上解决跨域问题可以使用插件,如果是egg.js项目可以使用egg-cors插件
egg-cors的使用:
安装插件
npm i install egg-cors --save//安装依赖
在config/plugin.js中添加配置
cors: {
enable: true,
package: 'egg-cors'
}
在config/config.default.js中添加:
//解决跨域
config.cors = {
origin: 'http://127.0.0.1:8080',//允许的端口和地址
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',//允许的请求方式
credentials:true//允许前端带cookie
};
在前端的请求中axios的配置中加入x下面代码来保证客户端可以带cookie去请求后端数据。
axios.defaults.withCredentials = true;