Uniapp中h5跨域解决

  • H5为啥会存在跨域问题

  • 小程序一切都正常的请求调用

  • App一切都正常的请求调用

此跨域问题只存在于浏览器端,App和小程序不存在跨域问题

出现如下报错

 参考地址:

manifest.json官方配置文档: uni-app官网

Chrome 调试跨域问题解决方案之插件篇: uni-app H5跨域问题解决方案(CORS、Cross-Origin) - DCloud问答

其实uni-app官方有解决跨域的办法,官方推荐使用HBuilderX中内置的浏览器去预览,在内置的浏览器中不会存在跨域问题,但是要是在Chrome 浏览器中预览的话就会出现这个跨域问题,官方推荐使用Allow-Control-Allow-Origin: *插件的方式去解决,但是我试过这个插件,不知道是什么问题,并没有效果,跨域问题依旧还是存在,后面再仔细的看了下文档,看到了下面的提示。

uni-appmanifest.json->h5->devServer 实际上对应 webpackdevServer,鉴于 manifest 为 json 文件,故 webpack.config.js->devServer 配置项下的简单类型属性均可在manifest.json->h5->devServer节点下配置,funciton 等复杂类型暂不支持。

 猜想能否使用proxy配置反向代理的方式去实现跨域请求,代码如下:

/* h5特有相关 */
"h5" : {
    "devServer" : {
         "port" : 8083, //端口号
          "disableHostCheck" : true,
          "proxy" : {
              "/api" : {
                  "target" : "http://localhost:8866/", //目标接口域名
                   "changeOrigin" : true,  //是否跨域
                   "secure" : false  // 设置支持https协议的代理
             }
        }
    }
}

此时需要用相对路径,不能使用绝对路径。

之前请求路径的配置需要进行更改:

本机转本机的跨域访问:当前访问的端口:http://localhost:8083 ——————>http://localhost:8866

本机转转云服务器的访问:

uni.request({url:"http://localhost:8866/api/banner/load"}) 这个是不会转发,代表直接去请求
​
uni.request({url:"/api/banner/load"}) =----------http://localhost:8083 /api/banner/load -------uni.request({url:"http://localhost:8866/api/banner/load"})

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Chrome浏览器可以通过调用本地程序来实现一些特定的功能。通过Chrome的应用程序界面API(Application Programming Interface),开发者可以在Chrome与本地程序进行交互。 首先,Chrome提供了一种称为Native Messaging的功能,允许Chrome与本地程序进行双向通信。通过Native Messaging,Chrome可以发送指令给本地程序,并接收来自本地程序的响应。 其次,Chrome还支持使用URL Scheme来调用本地程序。URL Scheme是一种定义在URL的特殊协议,可以用于启动本地程序并传递参数。例如,通过在Chrome输入"myapp://open?id=123"的URL,可以启动名为"myapp"的本地程序,并传递参数"id=123"给该程序。 除了Native Messaging和URL Scheme,Chrome还支持使用外部协议处理程序(External Protocol Handler)来调用本地程序。通过将某个协议(如"myprotocol")与本地程序关联,当Chrome点击使用该协议的链接时,系统将自动启动对应的本地程序。 值得注意的是,为了保证用户的安全和隐私,Chrome对调用本地程序的权限进行了限制。用户在使用Chrome时,需要授权给相应的网站或应用程序才能调用本地程序。 总而言之,Chrome可以通过调用本地程序来实现一些特定的功能,如与本地文件系统交互、实现浏览器与本地程序的协同等。通过合理使用Chrome的本地程序调用功能,我们可以获得更多的扩展和定制化的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值