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

2024-02-26 1184阅读

温馨提示:这篇文章已超过410天没有更新,请注意相关的内容是否还可用!

  • 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" : ""
                    }
                }
            }
        }
    }
    

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

    二、方式二:添加 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)
                  }
              })
          })
      }
      
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]