Vue项目在IIS发布

1.发布vue项目。

   在VSCode的终端下运行代码命令,会在程序根目录得到一个dist的文件夹 ,iis中就发布这个文件夹。

npm run build

2.先IIS正常发布dist文件夹网站,打开浏览器能浏览算第一步成功。

解决跨域

跨域说的是同源策略:协议//ip:端口  只要一个不一样都不能请求。

解决跨域:jsonp,代理服务器,cors

3.开发环境:由于在VSCode中Vue-cli 脚手架 帮我们做了代理服务器所以可以直接调试运行。

 下面的是开发环境在 vue.config.js中配置的代理服务器配置:  但是在run build 后这个就不在起作用,所以需要重新配置.

devServer: {
    proxy: {
      '/api': {//拦截以api开头的请求
        target: 'http://172.16.6.133:83',//接口地址
        pathRewrite:{'^/api':''},//替换路径中的/api
        ws: true,//websoket
        changeOrigin: true,//允许跨域
      },
    }
  }

4.生产环境:一般情况下Vue项目可以发布在nginx上 或者 iis 上

5.下面接着解决iis中发布后,跨域的问题:

6.下载requestRouter_amd64.msi ,rewrite_amd64_en-US.msi   后安装, 

7.重新打开iis 点击iis根节点右边会多一个【Application Request Routing Cache 】双击进去点击右边的Server Proxy Settings..   然后 勾上 Enable proxy 在点击右边的应用。

8.点击发布的vue项目右边会有一个【URL重写】双击进入后,右击[添加规则] 随便取个名称,

   请求的URL(R):与模式匹配     使用:通配符    模式:*api/*

   操作类型:重写    重写URL:http://172.16.6.133:83/{R:2} 这里写真实的接口地址 只替换你的ip端口     勾上停止处理后规则   其他不用理,后点击应用

9.关于axios请求代码:

  由于区分开发和生产环境,开发环境用vue自带的代理服务器,生产需要自己配置,那在开发和发布的请求代码就不一样。

  开发环境   地址写的是localhost

axios.get('http://localhost:8080/api/Home/GetStudents?name=123').then(
        (response) => {
          alert((this.Message = response.data));
        }, //成功回调
        (error) => {
          alert((this.Message = error.message));
        } //失败回调
      );

 生产环境  地址是iis发布的项目地址 172.16.6.133:8051

axios.get('http://172.16.6.133:8051/api/Home/GetStudents?name=123').then(
        (response) => {
          alert((this.Message = response.data));
        }, //成功回调
        (error) => {
          alert((this.Message = error.message));
        } //失败回调
      );

这也就是说 在实际开发中需要用变量或者配置来进行区分使用,方便切换。

IIS这个url代理重写的意思是:当你请求我发布的这个地址,我就会帮你重写到你配置的地址中去,api 是用来区分 去哪个接口地址请求数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值