发表于: 2019-10-13 23:47:55
0 716
今天完成了什么:
明天计划:
复盘
遇到了什么问题:
暂无;
收获了什么:
如何进行跨域
我们在使用vue-cli启动项目的时候npm run dev
便可以启动我们的项目了,通常我们的请求地址是以localhost:8080来请求接口数据的,localhost是没有办法设置cookie的。
我们可以在vue-cli配置文件里面设置一个代理,跨域的方法有很多,通常需要后台来进行配置。我们可以直接通过node.js代理服务器来实现跨域请求。
vue proxyTable接口跨域请求调试
在vue-cli项目中的config
文件夹下的index.js
配置文件中,dev
长这样子:
dev: { env: require('./dev.env'), port: 8080, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: {}, cssSourceMap: false }
服务器提供的接口如果长这样https://www.exaple.com/server_new/login
,我们把域名提取出来如https://www.exaple.com
;
在config中新建一个文件命名为proxyConfig.js
:
module.exports = { proxy: { '/apis': { //将www.exaple.com印射为/apis target: 'https://www.exaple.com', // 接口域名 secure: false, // 如果是https接口,需要配置这个参数 changeOrigin: true, //是否跨域 pathRewrite: { '^/apis': '' //需要rewrite的, } } } }
如果本身的接口地址就有 '/api' 这种通用前缀,也就是说https://www.exaple.com/api
,就可以把 pathRewrite
删掉。
config
文件夹下的index.js
引入proxyConfig.js
:
var proxyConfig = require('./proxyConfig')
config
文件夹下的index.js
中的dev
改成:
dev: { env: require('./dev.env'), port: 8080, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: proxyConfig.proxy, cssSourceMap: false }
重启项目npm run dev
:
你会发现出现了这个
这个时候我们已经设置好了本地API代理了
修改本地hosts
文件
window
文件路径一般是C:\Window\System32\drivers\etc
,mac
则直接前往文件夹/etc/hosts
,打开hosts
文件,在这一段下面把localhost
设置进去
# localhost name resolution is handled within DNS itself. # 127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> localhost# <span ::1<="" span="" style="word-break: break-all;"> localhost127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> activate<span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> practivate<span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> lmlicenses<span .wip4<="" span="" style="word-break: break-all;"><span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> lm<span .licenses<="" span="" style="word-break: break-all;"><span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> na1r<span .services<="" span="" style="word-break: break-all;"><span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">127<span .0<="" span="" style="word-break: break-all;"><span .0<="" span="" style="word-break: break-all;"><span .1<="" span="" style="word-break: break-all;"> hlrcv<span .stage<="" span="" style="word-break: break-all;"><span .adobe<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">localhost www<span .exaple<="" span="" style="word-break: break-all;"><span .com<="" span="" style="word-break: break-all;">
搞定
此时我们已经完全解决了跨域问题,以及本地测试后台无法向我们本地环境设置cookie
的情况了。
评论