使用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 相关文章推荐
让广告代码不再影响你的网页加载速度
Jul 07 Javascript
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
由Javascript实现的页面日历
Nov 04 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
简介JavaScript中的push()方法的使用
Jun 09 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
轻松掌握JavaScript中介者模式
Aug 26 Javascript
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
javascript操作向表格中动态加载数据
Aug 27 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&mysql(一)
2006/10/09 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
javascript基本类型详解
2014/11/28 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python遍历数组的方法小结
2015/04/30 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python数据操作方法封装类实例
2017/06/23 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
盛大笔试题
2016/11/05 面试题
会计求职自荐信
2014/06/20 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL