使用webpack-dev-server处理跨域请求的方法
在前端调试的时候,跨域一直都是一个比较麻烦的问题,这个在之前的文章 中其实已经讨论了一些可以使用的方法。
如果要使用 jsonp,第一是需要修改的地方比较多,而且也不太符合前端发展的大趋势,如果使用 cors 的话并没有 application/json 类型。而且更重要的是这只是在前端调试时候的需求,并不是在上线以后的需求,所以对后端有太多的入侵也不好。
所以就有一个念想突然在大脑中闪过——加入有一个代理不就可以解决这个问题了?但是又想了一下写起来还挺麻烦,于是就被搁置了。
直到前几天 stone 提到其实 webpack-dev-server 早就想到并且已经帮我们实现了。
于是,我就在一个 vue 项目中进行测试,发现真的很赞,既可以本地 server 热加载,还可以直接跨域调用远程 api,完美解决了之前遇到的所有问题。
接下来我简要介绍一下步骤(以一个 vue 脚手架建立的 webpack 项目为例):
首先检查 build/webpack.dev.conf.js 中是否有
proxy: config.dev.proxytable,
这个配置项,如果被注释掉,请打开注释,如果没有,请加入到 devserver 对象中
然后在 config/index.js 中的 dev 对象中加入 proxytable 配置项:
proxytable: { '/**': { target: 'http://api.xxx.com', changeorigin: true, secure: false } },
前面的键 /** 意思是代理所有请求,如果代理某些请求,可以将其改为诸如 /api 之类的字符串。
后面的 target 就是要代理到的网站,changeorigin 的意思就是把 http 请求中的 origin 字段进行变换,在浏览器接收到后端回复的时候,浏览器会以为这是本地请求,而在后端那边会以为是在站内的调用。
这样,通过这个简单的配置,就完美地解决了跨域的问题。
之后,在直接运行
npm run dev
的时候,就可以将测试前端中的 ajax 请求代理到后端服务器进行测试啦!
最后,贴上官方文档,具体的配置大家可以参考这里:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。