使用webpack-dev-server处理跨域请求的方法


Posted in Javascript onApril 18, 2018

在前端调试的时候,跨域一直都是一个比较麻烦的问题,这个在之前的文章 关于跨域问题的一个解决方法 中其实已经讨论了一些可以使用的方法。

如果要使用 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 请求代理到后端服务器进行测试啦!

最后,贴上官方文档,具体的配置大家可以参考这里:

https://webpack.js.org/configuration/dev-server/#devserver-proxy

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
May 24 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
require.js+vue开发微信上传图片组件
Oct 27 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
JS面试题中深拷贝的实现讲解
May 07 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
Apr 18 #Javascript
jQuery实现的两种简单弹窗效果示例
Apr 18 #jQuery
vue双向数据绑定知识点总结
Apr 18 #Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 #Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 #Javascript
JS实现二维数组横纵列转置的方法
Apr 17 #Javascript
redux中间件之redux-thunk的具体使用
Apr 17 #Javascript
You might like
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
python软件都是免费的吗
2020/06/18 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
计算机求职信
2013/12/01 职场文书
计算机专业自荐信
2015/03/05 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python