uniapp H5页面使用uni.request时,解决跨域问题,配置 uniapp 代理 proxy

概述

  • HBuilderX 2.5.1
  • uniapp中提供了uni.request进行向http请求数据(可以理解为ajax请求)。
  • uni.request 不支持 jsonp。
  • 一种办法是:在uni-app 的项目中 manifest.json文件中配置跨域代理

manifest.json编辑

使用源码视图进行编辑
在这里插入图片描述

manifest.json文件配置

在manifest.json中编辑h5节点(没有可以手动添加),在h5节点下添加proxy节点:

"h5" : {
        "devServer" : {
            "port" : 80,
            "disableHostCheck" : true,
            "proxy" : {
                "/api" : {
                    "target" : "http://xxx.mydomain.com",
                    "changeOrigin" : true,
                    "secure" : false
                }
            }
        }
    }
  • 上述配置含义:在以/api开头的请求前面添加上http://xxx.mydomain.com
  • uni.request请求/api/getCity时,则实际请求地址为http://xxx.mydomain.com/api/getCity

调用

接口地址:http://xxx.mydomain.com/api/getCity

uni.request({
	url: '/api/getCity',
	method: 'GET',
	data: {},
	success: res => {console.log(JSON.stringify(res))},
	fail: () => {},
	complete: () => {}
});

特殊说明一下

如果我的接口地址没有前缀怎么办?比如是这样的:http://api.mydomain.com/getCityhttp://api.mydomain.com/getUser。可以使用pathRewrite进行path重写。可以这样配置:

"h5" : {
        "devServer" : {
            "port" : 80,
            "disableHostCheck" : true,
            "proxy" : {
                "/api" : {
                    "target" : "http://xxx.mydomain.com",
                    "changeOrigin" : true,
                    "secure" : false,
                    "pathRewrite":{"^/api":""}
                }
            }
        }
    }
  • 上述配置含义:在以/api开头的请求前面添加上http://xxx.mydomain.com,并将/api替换成空字符。
  • "pathRewrite":{"^/api":""}:将/api替换成空字符。
  • uni.request请求/api/getCity时,则实际请求地址为http://xxx.mydomain.com/getCity

再特殊说明一下

HBuilderX支持热部署。但,不通过HBuilderX修改manifest.json文件时,则不会热部署。修改完manifest.json文件后,手动重新发布H5 app才能生效。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值