uniapp使用H5调试时跨域问题解决

 更新时间:2022年07月27日 15:39:56   作者:冰凉冰凉  
本文主要介绍了uniapp使用H5调试时跨域问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用uniapp开发APP时,为了开发方便,经常是H5开发好,然后再弄APP的兼容性问题。所以可能会涉及到跨域,此时也可以让后端同学帮忙,但是求人不如自己搞,所以分享一套跨域方法,其实也是webpack开发vue跨域的方法。废话不啰嗦,上代码。两个地方都可以配置效果一样取其一即可,第一个是vue.config.js,manifest.json源码

module.exports = {
    // 配置路径别名
    configureWebpack: {
        devServer: {
            disableHostCheck: true,
            proxy: {
                //配置跨域
                '/api': {
                    target: "http://www.xxx.com/",//转发的目标地址
                    secure : false,
                    changOrigin: true,
                    // pathRewrite: { //是否重写 如果重写的话,本地/api/a1/b1 就回变成/a1/b1 
                    //     '^/api': '' //意思就是把api这个替换成空 ''
                    // }
                }
            }
        }
    }
}

manifest.json源码视图直接上截 图方便理解,再次解释一下pathRewrite,很多人会因为这个导致无法使用

另外一旦在本地配置了,这个跨域代理,老是切换开发环境要变地址,官方也支持开发环境。

const baseURL = process.env.NODE_ENV === 'development' ? "/api/" : "https://www.正式地址.com/api/";

环境具体介绍

看到这里其实有的读者还是不太明白具体咋搞,或者按照这个代码写了还是不能成功使用,再用一些例子帮助你明白具体做了什么操作。
假设本地端口为localhost:9000,服务器测试地址为http://www.xxx.com,直接请求报跨域错误。
有两个请求的接口为http://www.xxx.com/api/test/t1,http://www.xxx.com/api/test/t2。
一般会封装地址,例如function getT1()地址为"text/t1",function getT2()地址为"text/t2"。
这时候api/就可以提取出来作为baseUrl,前面的代理,就可以配置/api 匹配api这个字段,把这个字段作为条件,
一旦匹配这个字段,就把这个字段的请求地址换成target定义的地址。

现在接口改了有两个请求的接口为http://www.xxx.com/api1/test1/t1,http://www.xxx.com/api2/test2/t2,
都不一样了也没有公共字段了,那我要怎么配置代理呢。这时候就用到pathRewrite,在接口的时候的时候认为的加一个识别标签,然后用重写给他去除后得到实际地址。代码如下

const baseURL = process.env.NODE_ENV === 'development' ? "/devApi/" : "https://www.正式地址.com/api/";//人为的在baseUrl中加入devApi
vue.config.js
module.exports = {
    // 配置路径别名
    configureWebpack: {
        devServer: {
            disableHostCheck: true,
            proxy: {
                //配置跨域
                '/devApi': {
                    target: "http://www.xxx.com/",//转发的目标地址
                    secure : false,
                    changOrigin: true,
                    pathRewrite: { 
                        '^/devApi': '' //意思就是把devApi这个替换成空 ''
                    }
                }
            }
        }
    }
}

本地请求的localhost:9000/devApi/api1/test1/t1 经过代理变成 http://www.xxx.com/api1/test1/t1

最后的最后,提醒一下,每次修改完配置,一定要记得关闭重新编译一下。

附上webpack对proxy的配置说明

到此这篇关于uniapp使用H5调试时跨域问题解决的文章就介绍到这了,更多相关uniapp H5跨域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javascript实现淡蓝色的鼠标拖动选择框实例

    javascript实现淡蓝色的鼠标拖动选择框实例

    这篇文章主要介绍了javascript实现淡蓝色的鼠标拖动选择框,可实现鼠标拖动出现淡蓝色选择框的效果,涉及javascript鼠标事件及样式的操作技巧,需要的朋友可以参考下
    2015-05-05
  • layui点击按钮页面会自动刷新的解决方案

    layui点击按钮页面会自动刷新的解决方案

    今天小编就为大家分享一篇layui点击按钮页面会自动刷新的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 深入理解Canvas模糊问题产生的原因与解决办法

    深入理解Canvas模糊问题产生的原因与解决办法

    我们在使用Canvas进行绘图时,经常会出现绘制的文字或者图片比较模糊,这篇文章我们就来讨论一下Canvas模糊问题产生的原因与解决办法吧
    2024-04-04
  • JS实现网页抢购功能(触发,终止脚本)

    JS实现网页抢购功能(触发,终止脚本)

    小编通过一个网页式的抢购功能的实现给大家讲解一下JS如何触发和终止脚本来完成这个任务。
    2017-11-11
  • javascript从右边截取指定字符串的三种实现方法

    javascript从右边截取指定字符串的三种实现方法

    这篇文章主要介绍了javascript从右边截取指定字符串的三种实现方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • js异或加解密效果代码

    js异或加解密效果代码

    比较不错的js异或加解密实例代码,方便学习js加解密的朋友
    2008-06-06
  • JS实现可点击展开与关闭的左侧广告代码

    JS实现可点击展开与关闭的左侧广告代码

    这篇文章主要介绍了JS实现可点击展开与关闭的左侧广告代码,通过鼠标onClick事件调用自定义javascript函数实现页面元素及样式的显示与隐藏效果,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • JS实现灯泡开关特效

    JS实现灯泡开关特效

    这篇文章主要为大家详细介绍了JS实现灯泡开关特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • javascript调试之DOM断点调试法使用技巧分享

    javascript调试之DOM断点调试法使用技巧分享

    在开发中,偶尔会遇到类似这样的问题:页面上的一个DOM元素被改了属性,但是我们却不知道是哪个脚本更改的
    2014-04-04
  • 关于JS中的箭头函数

    关于JS中的箭头函数

    这篇文章主要介绍了关于JS中的箭头函数,ES6中允许使用=>来定义函数。箭头函数相当于匿名函数,并简化了函数定义,箭头函数在语法上比普通函数简洁多。箭头函数就是采用箭头=>来定义函数,省去关键字function,需要的朋友可以参考下
    2023-05-05

最新评论