通常情况下的Vue应用都使用Nginx部署,Nginx有专门的反向代理设置,但若将Vue应用部署在IIS中,针对Vue应用中设置的接口跨域,IIS需要进行反向代理设置。
  

  跨域的设置分为开发环境和生产环境,在Vue-cli搭建的应用,开发环境解决跨域通常是在配置文件中使用proxy进行反代理,生产环境则需要使用反向代理。
 
  Nginx的反向代理不做介绍,网上有很多,本文主要介绍IIS中设置反向代理。
  
步骤
 
  一、IIS中安装ARR(Application Request Routing Cache),下载地址:https://www.iis.net/downloads/microsoft/application-request-routing

  二、IIS中安装urlrewrite,下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
 
  三、配置ARR
  1.重新打开iis,找到Application Request Routing Cache,打开功能
  
  2.然后选择Proxy,点击按钮
  
  
  选择启用代理,并应用设置
  
 
  Enabled proxy:打勾
  HTTP version:HTTP/1.1(默认是pass through)
 
  四、配置url重写
  选择部署的网站,点击url重写 打开功能,右侧添加规则
  
 
  
  

  选择默认的空白入站规则:
  
  编写相关信息,名字自己定,主要是配置操作
 
  附上我的配置信息:
名称:baiducors(可以随便写 我这边用的百度人脸识别接口)
匹配URL
请求的URL(与模式匹配)
使用:通配符 或者 正则表达式 看具体需要
模式:*baiduApi/* (备注:这里可以点击测试模式 自己看看重定向的地址是否正确)
条件:无
服务器变量:无
操作:重写
操作属性:https://aip.baidubce.com/{R:2}
附加查询字符串:打勾
停止处理后续规则:打勾

   

  五、重新启动下IIS,至此反向代理设置完事
  
  补充:针对跨域设置,iis还可以单独设置HTTP响应
  找到网站,打开HTTP响应标头设置
  

Access-Control-Allow-Headers  Content-Type,api_key,Authorization
Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Origin *
 
  
 
 
  其中
  Access-Control-Allow-Headers表示请求消息头;
  Access-Control-Allow-Methods表示请求方法;
  Access-Control-Allow-Origin表示请求来源,“*”表示不限定

 
 
   六、拓展
  项目在实际使用过一段时间后,发现通过iis设置的跨域设置不是很稳定,频繁多次访问,会请求失败或者耗时时间比较长,在Vue的项目中调用第三方接口,比如获取定位与逆地址解析等,很影响使用,因此更换了方式,在vue中使用jsonp的方式解决跨域。  
  1、安装 vue-jsonp 
    npm install vue-jsonp --save
  2、在main.js中引入
    import  { VueJsonp } from 'vue-jsonp'
    Vue.use(VueJsonp)
  3、示例调用的api   
new Promise((resolve, reject) => {
console.log("逆地址解析开始");
var geocoderUrl = "https://apis.map.qq.com/ws/geocoder/v1";
console.log("逆地址解析请求地址:"+geocoderUrl);
_this.$jsonp(geocoderUrl,{
key:_this.mapkey,
location:coordinates,
output: "jsonp"
})
.then(res => {
console.log(res);
resolve(res);
})
.catch((err) => {
reject(err);
})
}).then(data => {
if(data.status!=0){
obj.success = false;
obj.msg = data.message;
!!Callback && Callback(obj);
}
obj.result = data.result;
!!Callback && Callback(obj);
}).catch(error => {
console.log(error);
_this.$messagebox.alert('逆地址解析失败!'+ JSON.stringify(error));
obj.success = false;
!!Callback && Callback(obj);
});
  需要注意的是,因为引入了vue-jsonp,所以可以直接使用this.$jsonp, Vue.use(VueJsonp)方法里把$jsonp赋给vue原型了:Vue.prototype.$jsonp = jsonp
  即output: "jsonp"是必须的,接口中需要加入 output 参数来告诉腾讯地图访问请求为 jsonp ;
 

   
 
 

IIS上开启反向代理实现Vue项目接口跨域处理的更多相关文章

  1. 【转】IIS上的反向代理

    http://blog.csdn.net/yuanguozhengjust/article/details/23576033 一直说在IIS上做反向代理,由于沉迷在nginx一行指令完事的美好情景当中 ...

  2. Server 主机屋云服务器 宝塔面板 部署nginx反向代理的vue项目

    图文记录云服务器上部署需要nginx反向代理的vue项目: 一.先登录并购买云服务器,根据自己需求购买,此处不详细介绍: 二.登录后如下图,点击进入云服务器界面: 三.在云服务器界面点击管理,进入管理 ...

  3. iis上的反向代理

    阅读文章: IIS上的反向代理 ARR(Application Request Routing)

  4. 14 微服务电商【黑马乐优商城】:day06-使用nginx反向代理并掌握cors解决跨域

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  5. nginx反向代理部署vue项目(history模式)的方法

    前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...

  6. Vue Nginx反向代理配置 解决生产环境跨域

    Vue本地代理举例: module.exports = { publicPath: './', devServer: { proxy: { '/api': { target: 'https://mov ...

  7. nginx反向代理实现前后端分离&跨域问题

    1.代理和跨域 1.1 正向代理 1)用户希望代理服务器帮助其和要访问服务器之间实现通信,需要: a.用户IP报文的目的IP=代理服务器IP: b.用户报文端口号=代理服务器监听端口号: c.HTTP ...

  8. $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)

    1 跨域问题(多个域之间的数据访问) #同源策略(ip port 协议全部相同) #本站的只能请求本站域名的数据 #CORS实现(跨域资源共享) #实现CORS通信的关键是服务器.只要服务器实现了CO ...

  9. vue proxyTable 接口跨域请求调试

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

  10. vue proxyTable 接口跨域请求调试(五)

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

随机推荐

  1. Cartographer学习——地图概率更新过程

    前言:最近一直在研究建图,对google的开源SLAM框架 Cartographer 进行了源码梳理,发现很多巧妙的算法设计,结合原论文 <Real-time Loop Closure in 2 ...

  2. 字符串、列表、元组、字典(python)

    文章目录 1.python字符串 1.1 python访问字符串中的值 1.2Python 字符串连接 1.3Python字符串运算符 2.python列表 2.1访问列表中的值 2.2更新列表 2. ...

  3. Vue2.x 常用功能和方法

    Vue 生命周期 beforeCreate (组件实例刚被创建,组件属性计算之前,如 data 属性等) created (组件实例创建完成, 属性已绑定,但 DOM 还未生成, $el 属性不存在) ...

  4. Go服务自动触发单元测试覆盖率

    一.用到的工具 Gitlab Jenkins Shell go test 二.实现原理 在gitlab上配置jenkins的webhook,当有代码变更时自动触发jenkins构建job,job内的s ...

  5. C++ 函数模板与类模板

    目录 16.1.1 函数模板 16.1.2 类模板 定义类模板 实例化模板 在类外定义成员函数 类模板成员函数的实例化 类模板和友元 模板类型别名 类模板参数的static成员 16.1.3 模板参数 ...

  6. 题解:CF1551D1 Domino (easy version)

    题解:CF1551D1 Domino (easy version) 分析 题目中保证 \(n\times m\) 为偶数,下面进行分类讨论. 情况一 如果 \(n\) 和 \(m\) 都是偶数,那么可 ...

  7. oracle查询是否锁表以及解锁语句

    --锁表语句 SELECT b.owner, b.object_name, a.session_id, a.locked_mode FROM v$locked_object a, dba_object ...

  8. 一篇讲透:模组典型上网业务的AT上网流程

    ​ 今天我们学习合宙模组典型上网业务的AT上网流程. 文末阅读原文,下载最新教程/固件. 一.简介 本文介绍了合宙4G模组的常用的AT指令和服务器交互的流程. 进一步详细的流程,参见各个模组的AT命令 ...

  9. Air780EP低功耗4G模组AT开发:阿里云应用

    ​ Air780EP是合宙推出的一款低功耗4G全网通模组,兼容模组行业1618经典封装,支持OpenCPU开发及全功能数传AT开发,可广泛应用于多样化的物联网终端. 针对客户朋友需求反馈,本期特别推出 ...

  10. 【一步步开发AI运动小程序】三、运动识别处理流程

    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...