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


Posted in Javascript onJanuary 13, 2018

文档资料

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'

  1. 结合上面的 “调用接口” 可以看出, url: '/test/testFetch/Login.php' 这句,实际上会自动补充前缀,也就是说,url: '/test/testFetch/Login.php' 等价于 url: 'http://10.0.0.9:3000/test/testFetch/Login.php'
  2. 但是,我们使用了http-proxy进行重定向,这样的话,url: '/test/testFetch/Login.php' 等价于 url: 'http://localhost/test/testFetch/Login.php'

changeOrigin

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

secure

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

pathRewrite

  1. 例子: pathRewrite: {'^/api': ''}
  2. Object-keys will be used as RegExp to match paths
  3. 我猜,这里是将 '^/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 相关文章推荐
表单项的name命名为submit、reset引起的问题
Dec 22 Javascript
javascript中的继承实例代码
Apr 27 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
vue2.0 axios跨域并渲染的问题解决方法
Mar 08 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
json前后端数据交互相关代码
Sep 19 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
vuejs实现递归树型菜单组件
Jan 13 #Javascript
在vue中通过axios异步使用echarts的方法
Jan 13 #Javascript
详解基于vue-cli配置移动端自适应
Jan 13 #Javascript
javascript用rem来做响应式开发
Jan 13 #Javascript
深入理解ES6之数据解构的用法
Jan 13 #Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 #Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 #Javascript
You might like
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python进阶教程之循环对象
2014/08/30 Python
在Python中使用第三方模块的教程
2015/04/27 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
利用nohup来开启python文件的方法
2019/01/14 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
python requests库的使用
2021/01/06 Python
历史专业个人求职信范文
2013/12/07 职场文书
公司部门司机岗位职责
2014/01/03 职场文书
大学生志愿者感言
2014/01/15 职场文书
安全生产年活动总结
2014/08/29 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
遗嘱范文
2015/08/07 职场文书