UMI项目或者Ant Design Pro项目中如何实现跨域访问?
在开发过程中,经常会遇到这样的问题:从某个项目中的页面,想要跳到另一个项目中的页面,那怎么办呢。首先我们来看一下何为跨域?
跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域
访问其他项目中的页面,那么域名肯定是不一样的,所以刚才谈到的是一个典型的跨域访问的问题。那我们该如何解决呢?其实解决方法有多种, ==比如通过配置文件,不同的环境用不同的配置文件;又或者来自服务器,让服务器传回这些变量;又或者通过缺省参数,默认情况是生产环境参数,测试和开发时通过自动脚本修改为本地的参数……==这里暂时只先介绍修改配置文件的方法,由于UMI项目和Ant Design Pro项目在配置上有些许差别,所以这里分开介绍。如果想要来了解更多,大家可以去看下umi的官网 https://umijs.org/,里面有更为详细的介绍。
1. UMI项目的解决办法
如图,首先找到项目中的 .umirc.js 这个文件,这是umi的默认配置文件
根据个人需要可以添加测试环境以及生产环境的配置文件,这里我只添加了测试环境下的配置文件 .umirc.qa.js
接着在默认的配置文件.umirc.js和添加的测试环境的配置文件.umirc.qa.js中加上define配置,其中链接地址写你要访问的另一个项目的域名地址
添加的测试环境的配置文件.umirc.qa.js中只需要单独配置define,不需要把默认配置文件的其他内容复制过来
接着找到 package.json 这个文件,根据自身需要进行脚本的配置,start和build是一样的配置方式,这里我选择的是测试环境qa
最后在控制台为项目安装 cross-env 依赖,输入执行命令 npm install --save-dev cross -env 即可,如果控制台没有报错,就说明安装成功了(注意:控制台可能会出现未安装python的警告,这里不用理会),文件中中就会出现相应的依赖及其对应的版本
代码中使用时直接写 window.变量名 即可(注意:这里一定要使用 a标签,不能使用Link标签,因为Link是react-router的组件,是跳转react应用的虚拟URL,无法跳转外链)
2. Ant Design Pro项目的解决办法
Ant Design Pro项目的默认配置文件是config.js,同时我在里面添加了测试环境的配置文件config.qa.js,大家结合自己的情况进行添加
同样在默认配置文件里面加上define配置,地址仍然写自己要访问的域名地址即可
测试环境的配置文件同样只加define配置即可
接着找到 package.json 这个文件,根据自身需要进行脚本的配置,start和build-qa(因为我需要用到测试环境)是一样的配置方式
最后在控制台为项目安装 cross-env 依赖,输入执行命令 npm install --save-dev cross -env 即可,如果控制台没有报错,就说明安装成功了(注意:控制台可能会出现未安装python的警告,这里不用理会),文件中中就会出现相应的依赖及其对应的版本
OK,结束。