UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)

简介: 这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
  • UniApp 运行到浏览器的时候,接口会跨域报错,这里通过两种方式解决,第一:修改Uniapp自带的manifest.json 源码视图并进行配置h5设置。第二:在项目根目录新建vue.config.js并配置代理。 二选一即可。

  • 修改或调整配置文件后,推荐重新运行,以防不生效。

  • 配置完成后,请求接口显示 Please enable JavaScript to continue. 的话,可以试试重启编辑器(尤其是 HBuilderX),再重新运行项目,如果还是不行就另外查查解决方案吧,网上有很多。

一、方式一:修改 manifest.json 文件

在 UniApp 也有类似配置的地方:找到 manifest.json -》源码视图,添加 h5 配置项:

"h5" : {
    "devServer" : {
        "disableHostCheck" : true,
        "proxy" : {
            "/api" : {
                "target" : "http://www.dzm.com/",
                "changeOrigin" : true,
                "secure" : false,
                "ws": false,
                "pathRewrite" : {
                    "^/api" : ""
                }
            }
        }
    }
}

在这里插入图片描述

二、方式二:添加 vue.config.js 文件

  • UniApp 会识别 vue.config.js 文件,但是 manifest.json 的优先级
    要高于 vue.config.js 文件,所以看需求选择一个配置即可。

  • 像 vue 开发一样,手动创建一个 vue.config.js 文件,然后添加上代理,vue.config.js 只能创建在项目的根目录,不然会无法识别到。

module.exports = {
    devServer: {
        disableHostCheck: true,
        proxy: {
            '/api': {
                target: 'http://www.dzm.com/',
                changeOrigin: true,
                secure: false,
                ws: false,
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    }
}

三、使用

简单使用

// 请求对象
uni.request({
    url: '/api' + '/mobile/user/userinfo',
    method: 'GET',
    data: {},
    header: {
        'X-Token': uni.getStorageSync('token')
    },
    success: (res) => {
        // 请求成功
        console.log(res)
    },
    fail: (err) => {
        // 请求失败
        console.log(err)
    }
})

封装成请求对象 request.js

// 接口域名
// #ifdef H5
const BaseHost = '/api'
// #endif
// #ifndef H5
const BaseHost = 'http://www.dzm.com/'
// #endif
// 请求封装
export default function ({
    // 请求域名
    host = BaseHost,
    // 请求地址
    url,
    // 请求方式
    method,
    // 请求数据
    data = {},
    // 请求头
    header = {}
}) {
    // 官方请求文档(可查阅传参)https://uniapp.dcloud.io/api/request/request.html
    // 转为 Promise 结构
    return new Promise((resolve, reject) => {
        // 请求对象
        uni.request({
            url: host + url,
            method,
            data,
            header: Object.assign({
                // 默认请求头
                'X-Token': uni.getStorageSync('token')
            }, header),
            success: (res) => {
                // 可以在这里进行成功的公共处理
                resolve(res)
            },
            fail: (err) => {
                // 可以在这里进行失败的公共处理
                reject(err)
            }
        })
    })
}
相关文章
|
3月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
193 2
|
5月前
|
缓存 编解码 数据可视化
uniapp发行快应用 [HBuilder] 23:33:45.537 manifest.json->quickapp-webview 缺少 icon 配置如何解决优雅草卓伊凡
uniapp发行快应用 [HBuilder] 23:33:45.537 manifest.json->quickapp-webview 缺少 icon 配置如何解决优雅草卓伊凡
169 5
uniapp发行快应用 [HBuilder] 23:33:45.537 manifest.json->quickapp-webview 缺少 icon 配置如何解决优雅草卓伊凡
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
525 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
JavaScript
Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
这篇文章介绍了Nest.js服务在应用程序引导过程中,TypeScript编译对效率的影响,以及如何通过使用webpackHMR来降低应用实例化的时间。文章包含具体教程,指导读者如何在项目中安装依赖包,并在根目录下新增webpack配置文件webpack-hmr.config.js来调整HMR相关的配置。最后,文章总结了如何通过自定义webpack配置来更好地控制HMR行为。
282 0
Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
8531 24
|
9月前
|
Prometheus 监控 JavaScript
Node.js连接池配置的五个隐形陷阱与防御体系:从创业公司血泪史说起
文章以创业公司血泪史为例,详细阐述了 Node.js 连接池配置的五个隐形陷阱及防御体系。包括连接泄漏、配置参数算术错误、异步异常导致崩溃、跨连接事务问题、监控缺失,并介绍了相应的解决办法和终极防御手段,强调在确定性与不确定性中寻找平衡,建立自适应机制。
461 13
|
前端开发 JavaScript
uniapp动态修改css样式(通过js来修改css样式)
uniapp动态修改css样式(通过js来修改css样式)
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
358 4
|
存储 JSON JavaScript
js中JSON的使用
介绍JSON的基本概念和在JavaScript中的使用方式,包括JSON格式的语法规则、使用`JSON.stringify()`和`JSON.parse()`方法进行对象与字符串的转换,以及处理JSON数组数据。
js中JSON的使用
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
673 0
Vue3基础(19)___vite.config.js中配置路径别名