vue-cli axios跨域 + 反向代理模拟http请求host+referer
axios跨域
配置config->index.js中的proxyTable,内容如下:
proxyTable: { // 跨域请求
'/api': { // 注意此处可设置为 '*' 代表不限制于某个接口,target下的所有接口都可以访问
target:'http://www.webdomain.com', // 你请求的第三方接口
changeOrigin:true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite:{ // 路径重写, '/api' 改为 '*'后此处要删除
'^/api': '/api' // 替换target中的请求地址,也就是说以后你在请求 http://www.webdomain.com/dataxxx 这个地址的时候直接写成/api即可。
}
}
},
单个数据请求 - 反向代理模拟HTTP请求 host + referer
一、webpack v3.6.0之前
故如果想拿到该接口数据可以进行伪造访问来路,不过这是一种欺骗服务器的手段,笔者并不提倡,仅供学习参考!
在老一点版本的vue2.0 配置下,build目录下有提供了dev-server 和 dev-client的配置,仿造refer配置如下:
build -> dev-server.js 引入相关依赖
var app = express()
var apiRoutes = express.Router()
在指定位置配置代理接口
var apiRoutes = express.Router() /**
* @parameter '/getDataList' 本地代理接口,也就是说以后你在请求
* http://www.webdomain.com/dataxxx 这个地址的时候直接写成/getDataList即可
*
* */
apiRoutes.get('/getDataList', function (req, res) {
var url = 'http://www.webdomain.cn/apidata' // 请求的数据接口
axios.get(url, {
headers: {
referer: 'http://www.webdomain.cn',
host: 'www.webdomain.cn'
},
params: req.query
}).then((response) => {
res.json(response.data)
}).catch((e) => {
console.log(e)
})
})
二、webpack v3.6.0之后
webpack升级到了v3.6.0,里边去掉了dev-server和dev-client两个文件。 现在再对接口的设置不能再在dev-server配置了,而改在webpack.dev.conf.js里进行配置。该接口配置如下:
build > webpack.dev.conf.js 引入相关依赖
var express = require('express')
var axios = require('axios')
var app = express()
var apiRoutes = express.Router()
app.use('/api', apiRoutes);
在指定位置配置代理接口
devServer: {
before(apiRoutes){ // 添加before
apiRoutes.get('/getDataList',(req,res)=>{
let url = 'http://www.webdomain.cn/apidata'
axios.get(url, {
headers: {
referer: 'http://www.webdomain.cn/',
host: 'www.webdomain'
},
params: req.query //这是请求的query
}).then((response) => {
//response是api地址返回的,数据在data里。
res.json(response.data)
}).catch((e) => {
console.log(e);
})
});
},
},
调用代理接口
/* 获取用户session数据 */
export function getUserSession () {
const url = `${WEB_DOMAIN}/users/info`
const datas = Object.assign({}, {}) return axios.get(url, {
params: datas
}).then(res => {
return Promise.resolve(res, datas)
})
}
注意:第二种方法想实现多个接口跨域访问就要配置多个 apiRouters.get() 方法,第一种可以把 '/api' 改为 '*' 代表可以访问 target域名下的所有Api
vue-cli axios跨域 + 反向代理模拟http请求host+referer的更多相关文章
- Vue用axios跨域访问数据
Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...
- $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)
1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...
- vue cli 解决跨域 线上 nginx 反向代理配置
前后分离 axios 接 api 跨域问题如图: 解决办法: 1. npm start 本地开发环境解决: 在webpack配置文件 /config/index.js 里找到 proxyTable 开 ...
- vue 解决axios 跨域问题
闲着没事,假期敲vue 请求数据,总结下vue跨越问题 第一种.服务器服务器不支持跨域请求 1.当跨域无法请求的时候我们可以修改工程下config文件夹下的index.js中的dev:{}部分. ...
- vue 跨域配置代理 get/post 请求
1.第一步要有 axios 插件 : npm i axios 首先要在自己的项目手动添加一个文件 vue.config.js 个人理解的为 这是axios 封装的跨域文件. 2.vue.config. ...
- vue 使用axios 跨域请求数据的问题
axios默认是没有jsonp 跨域请求的方法的.一般来说流行的做法是将跨域放在后台来解决,也就是后台开发人员添加跨域头信息. 例如java中的 header,response.setHeader(& ...
- Vue 中 axios 跨域配置 (!!!配置完成需要重新运行,不然也不起作用)
当拿到一个网址如:https://music.163.com/store/api/categorypage/list 获取数据是出现如下: 证明该网址不能非常直观的拿到数据.接下来我们试试跨域拿这个 ...
- axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数
1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...
- 基于 HTTP 请求拦截,快速解决跨域和代理 Mock
近几年,随着 Web 开发逐渐成熟,前后端分离的架构设计越来越被众多开发者认可,使得前端和后端可以专注各自的职能,降低沟通成本,提高开发效率. 在前后端分离的开发模式下,前端和后端工程师得以并行工作. ...
随机推荐
- 2018年-2019年第二学期第五周C#学习个人总结
在本周我学习了第五章面向对象高级中的5.3多态,5.3多态中主要包括重写父类方法,多态的实现,base关键字,里氏转换原则,Object类.在重写父类方法中要求当重写父类的方法时,要求子类的方法名,参 ...
- Windows环境下利用anaconda3安装python版本的Xgboost
网上有各种不同安装Xgboost的教程,但是有些教程对于一个新手来说,照着做安装成功是很困难的.本人也是新手,第一次安装Xgboost的时候,照着某个教程做,结果总是安装不上,甚至想到要放弃.后来经一 ...
- scrapy 爬虫的暂停与重启
暂停爬虫项目 首先在项目目录下创建一个文件夹用来存放暂停爬虫时的待处理请求url以及其他的信息.(文件夹名称:job_info) 在启动爬虫项目时候用pycharm自带的终端启动输入下面的命令: sc ...
- JS高程关于ajax的学习笔记
1.ajax介绍 ajax技术可以实现浏览器向服务器请求数据时不需要重新加载页面,就可以从服务器中获取需要的数据. ajax技术的核心是XMLHttpRequest对象(简称XHR),XHR对象为向服 ...
- P3224 [HNOI2012]永无乡
思路 平衡树+启发式合并 貌似也可以线段树合并 连边就是合并两个Treap,查询就是第k大 使用Treap,好写好调 代码 #include <cstdio> #include <a ...
- stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因
我使用库函数建的工程(非Keil自带库),为了实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信,发现使用库函数建的工程程序不能通过,读出来的数据和写的数据不一 ...
- 剑指offer:顺时针打印矩阵
问题描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
- win10家庭版安装Docker for Windows
0. 背景 硬件:小米笔记本 Air 13/Inter Core i7-7500U 操作系统:Windows 10 家庭中文版 补丁:截止2019/1/25最新稳定补丁 Docker:Docker W ...
- kafka consumer 配置详解
1.Consumer Group 与 topic 订阅 每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group.所以一条message ...
- How Many Zeroes? LightOJ - 1140
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...