详解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 相关文章推荐
javascript之可拖动的iframe效果代码
Aug 01 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
Dec 07 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
Jan 19 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
Sep 05 Javascript
js实现砖头在页面拖拉效果
Nov 20 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
JS阻止事件冒泡的方法详解
Aug 26 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
javascript数组去掉重复
2011/05/12 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
Python 装饰器深入理解
2017/03/16 Python
Python构建XML树结构的方法示例
2017/06/30 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
Python如何对齐字符串
2020/07/30 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
企划专员岗位职责
2013/12/09 职场文书
高中化学教学反思
2014/01/13 职场文书
社区母亲节活动记录
2014/03/06 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
财政局个人年终总结
2015/03/03 职场文书
食品药品安全责任书
2015/05/11 职场文书
赞美教师的句子
2019/09/02 职场文书
导游词之张家口
2019/12/13 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript