uniapp小程序转H5轻松解决跨域问题

本文介绍了在uniapp中如何解决从小程序转为H5时遇到的跨域问题。通过在manifest.json配置代理,并进行路径重写,解决了H5的跨域障碍。同时,文章提到了条件判断的使用,以确保代码在不同平台的正确运行。作者强调了配置代理后重新编译的重要性,并祝愿读者在技术道路上顺利前行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天又是开心的一天,作为一名程序员解决bug内心是无比快乐的感觉

好了不扯了,直接主题,大家都知道uniapp可以完成一套代码运行多个平台,最近公司的项目就是uni写的一个小程序,因为业务需求,最近让转H5,运行一堆报错,然后就有了这篇博客

大家都知道小程序是没有跨域的,转H5之后首先解决的就是跨域问题,个人也是翻看了很多帖子,大致解决跨域问题的都相似雷同,以下是uniapp解决H5跨域实现

我们首先要在manifest.json中配置以下代码

 

// h5端跨域配置
"h5" : {
    "devServer" : {
		"port": 8000, //端口号
        "disableHostCheck" : true,
        "proxy" : {
            "/api" : {
                "target" : "https://api.ggjtaq.com/v1.0", //源地址
                "changeOrigin" : true,    // 是否跨域
                "secure" : false,    // https
                "pathRewrite" : { // 路径重写
                    "^/api" : "/"
                }
            }
        }
    },
    "router" : {
        "mode" : "history"
    }

这里要注意,我也是吃过坑的希望大家不要像我一样走弯路,就是在配置代理是千万不要忘记要路径重写为" / " ,不然不会报错但是也没有效果

如果想在多平台运行 我们就要考虑是在H5运行还是小程序运行

// 运行在h5
		//#ifdef H5 
			apiurl: '/api',  // 因为我们之前配置代理了这里我们用'/api'就可以了
		//#endif
// 运行在小程序
		//#ifdef MP-WEIXIN 
			apiurl:
				'https://www.baidu.com', //这是之前运行在小程序的源地址
			
		//#endif

加上这层条件判断在其他代码我们就不用去改了

最后我们千万要记住在manifest.json中配置代理以后要重新编译

最后我们千万要记住在manifest.json中配置代理以后要重新编译

最后我们千万要记住在manifest.json中配置代理以后要重新编译

重要的事说三遍怕你们忘记了,最后祝大家以后升职加薪迎娶白富美。

### UniApp 小程序H5 页面的方法 在UniApp项目中实现从小程序环境向H5页面的跳,通常会涉及到利用`web-view`组件或是通过特定API函数间接完成此操作。对于直接的小程序H5网页链接换场景而言,推荐采用内置导航功能配合URL构建的方式。 #### 使用 `web-view` 组件加载外部网站 当目标是从小程序内部展示一个完整的H5页面而非简单重定向时,可考虑使用`<web-view>`标签[^1]: ```html <template> <view> <!-- web-view用于嵌入并显示指定url的内容 --> <web-view :src="externalUrl"></web-view> </view> </template> <script> export default { data() { return { externalUrl: 'http://example.com' } }, } </script> ``` #### 利用 API 函数进行页面切换 如果目的是完全离开当前应用环境前往浏览器打开新网址,则可以通过如下方式调用相应接口[^2]: ```javascript // 假设这是准备要访问的目标地址 const targetUrl = 'https://www.example.com'; // 对于非 tabBar 的页面间移可以选择 navigateto 或者其他类似 api uni.navigateTo({ url: `/pages/webview/index?url=${encodeURIComponent(targetUrl)}` }); ``` 这里假设存在名为`webview`的一个页面专门用来承载上述提到过的`<web-view>`组件,并接受来自上层传来的参数作为其源地址。 另外,在某些情况下可能还需要处理请求等问题,这便涉及到了manifest.json文件内的配置调整[^3]。不过针对单纯的小程序H5的需求来说,一般无需特别关注这部分细节除非确实遇到了权限障碍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值