使用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 贪吃蛇实现代码
Nov 22 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
详解react阻止无效重渲染的多种方式
Dec 11 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
java和js实现的洗牌小程序
Sep 30 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
一个用于网络的工具函数库
2006/10/09 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
laravel学习教程之存取器
2016/07/30 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JS input 数字验证代码
2009/07/30 Javascript
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
element ui table 增加筛选的方法示例
2018/11/02 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
python 实现selenium断言和验证的方法
2019/02/13 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
python help函数实例用法
2020/12/06 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
几个判断型的面试题
2012/07/03 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
酒会邀请函
2015/01/31 职场文书
戒赌保证书
2015/05/11 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
雷锋的观后感
2015/06/10 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
深入理解go缓存库freecache的使用
2022/02/15 Golang