使用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实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
Jun 13 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
js命名空间写法示例
2015/12/18 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
js实现蒙版效果
2020/01/11 Javascript
用python找出那些被“标记”的照片
2017/04/20 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python系列 文件操作的代码
2019/10/06 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
python statsmodel的使用
2020/12/21 Python
纽约手袋品牌:KARA
2018/03/18 全球购物
工地资料员岗位职责
2013/12/31 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
七年级历史教学反思
2014/02/05 职场文书
文艺晚会主持词
2014/03/24 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
工作总结与自我评价
2014/09/18 职场文书
先进学校事迹材料
2014/12/30 职场文书
python OpenCV学习笔记
2021/03/31 Python
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
详解MySQL中的pid与socket
2021/06/15 MySQL
Golang日志包的使用
2022/04/20 Golang