Webpack devServer中的 proxy 实现跨域的解决


Posted in Javascript onJune 15, 2018

Webpack dev server使用http-proxy解决跨域问题

文档资料

webpack关于webpack-dev-server开启proxy的官方介绍

Vue-cli proxyTable 解决开发环境的跨域问题——虽然这篇是写vue的,不过用在webpack-dev-server上也是一样的

http-proxy-middleware——webpack-dev-server的实现方法其实是对这个的封装

配置http-proxy

在webpack的配置文件(webpack.config.js)中进行配置

module.exports = {
 ...此处省略一万字

 // webpack-dev-server的配置
 devServer: {
 historyApiFallback: true,
 hot: true,
 inline: true,
 progress: true,
 port: 3000,
 host: '10.0.0.9',
 proxy: {
 '/test/*': {
 target: 'http://localhost',
 changeOrigin: true,
 secure: false
 }
 }
 },

 ...此处省略一万字
};

上述配置中,关于http-proxy的只是 proxy:

 {...} 中的值

调用接口

为了方便起见,下面使用jquery封装好的ajax函数进行示范

$.ajax({
 // url: 'http://10.0.0.9:3000/test/testFetch/Login.php', // 这样不行
 url: '/test/testFetch/Login.php', // 这样行
 type: 'post',
 data: {
 app_id: '13751313169',
 password: '123456',
 user_name: 'Nicholas'
 },
 success: function(data) {
 console.log(data);
 }
});

proxy中的部分参数说明
'/test/*' 以及 target:
 'http://localhost'

从名字就能看出,这个实际上是将匹配 '/test/*' 这种格式的API的域名重定向为 'http://localhost'

结合上面的 “调用接口” 可以看出, url:
 '/test/testFetch/Login.php' 这句,实际上会自动补充前缀,也就是说,url:
 '/test/testFetch/Login.php' 等价于 url: 'http://10.0.0.9:3000/test/testFetch/Login.php'

但是,我们使用了http-proxy进行重定向,这样的话,url:
 '/test/testFetch/Login.php' 等价于 url: 'http://localhost/test/testFetch/Login.php'

changeOrigin

  • true/false, Default: false - changes the origin of the host header to the target URL
  • 本地会虚拟一个服务端接收你的请求并代你发送该请求——这个是别人的说法
  • 我试了一下,就算这个参数设置成 false 也有部分情况是可以的,具体原因不详,所以还是将其设置成 true 吧

secure

  • true/false, if you want to verify the SSL Certs

pathRewrite

例子: pathRewrite:
 {'^/api': ''}

Object-keys will be used as RegExp to match paths

我猜,这里是将 '^/api' 使用 '' 代替(只是我猜,没是成功,估计是我的正则表达式写得不行)

附上使用Fetch API的代码

上述代码与 “调用接口” 中使用 $.ajax() 实现的效果是一样的

let testAsync = async function () {
 var feeling = {
 app_id: '13751313169',
 password: '123456',
 user_name: 'Nicholas'
 };

 var fetchParams = {
 method: 'post',
 headers: {
 'Accept': 'application/json',
 'Content-Type': 'application/json'
 },
 credentials: 'include', // 将凭证也带上(例如cookies)
 body: JSON.stringify(feeling),
 };

 let temp = await fetch('/test/testFetch/Login.php', fetchParams).then(response => response.text());
 console.log(temp); // 这个就是一个json对象
 return temp;
};

let data = testAsync(); // async函数返回值是一个Promise对象
console.log(data); // 这个是一个Promise对象

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

Javascript 相关文章推荐
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
jquery的选择器的使用技巧之如何选择input框
Sep 22 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
关于Jquery中的事件绑定总结
Oct 26 Javascript
详解微信小程序中组件通讯
Oct 30 Javascript
js实现倒计时器自定义时间和暂停
Feb 25 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
element-ui封装一个Table模板组件的示例
Jan 04 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
详解webpack的proxyTable无效的解决方案
Jun 15 #Javascript
vue中axios的封装问题(简易版拦截,get,post)
Jun 15 #Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 #Javascript
webpack公共组件引用路径简化小技巧
Jun 15 #Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 #Javascript
微信小程序实现自定义modal弹窗封装的方法
Jun 15 #Javascript
详解vue组件开发脚手架
Jun 15 #Javascript
You might like
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
认识延迟时间为0的setTimeout
2008/05/16 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
csdn 博客的css样式 v3
2009/02/24 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python调用shell的方法
2013/11/20 Python
Python实现多行注释的另类方法
2014/08/22 Python
Python 异常处理的实例详解
2017/09/11 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
python判断设备是否联网的方法
2018/06/29 Python
python 实现绘制整齐的表格
2019/11/18 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
护理目标管理责任书
2014/07/25 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers