uniapp H5 https跨域請求實現
什麼是跨域
跨域是瀏覽器的專用概念,指js代碼訪問自己來源站點之外的站點。比如A站點網頁中的js代碼,請求瞭B站點的數據,就是跨域。
A和B要想被認為是同域,則必須有相同的協議(比如http和https就不行)、相同域名、和相同端口號(port)。
如果你是做App、小程序等非H5平臺,是不涉及跨域問題的。
由於uni-app是標準的前後端分離模式,開發h5應用時如果前端代碼和後端接口沒有部署在同域服務器,就會被瀏覽器報跨域。
本文主要介紹uniapp H5開發中,本地調試https的接口實現跨域請求
源碼視圖
"h5" : { "title" : "", "domain" : "", "router" : { "mode" : "hash", "base" : "/h5/" }, "devServer" : { // "https" : true, "proxy":{ "/api": { "target":"https://域名/api", "changeOrigin": true,//是否跨域 "secure": true,// 設置支持https協議的代理 "pathRewrite":{"^/api":""} } } } }
接口請求
uni.request({ // url: ApiUrl + opt.url, url: '/api' + opt.url, data: data, method: opt.method, header: opt.header, dataType: 'json', success: function (res) { if(res.data.code=='401'){ uni.showToast({ title: res.data.msg, icon: 'none' }); uni.navigateTo({ url: '/pages/me/login' }); } else { opt.success(res); } }, fail: function (res) { uni.hideLoading(); // opt.fail(res); uni.showToast({ title: '網絡異常', icon:'none' }); } })
如此這般,跨域功成。
問題引申
有小夥伴問uniapp客戶端對接第三方,uniapp這邊我用的是https,但是第三方用的http,請問這種該如何去解決跨域問題呢?
// 思路和vue是一樣的 1、安裝vue jsonp npm i -S vue-jsonp // 引入vue-jsonp 解決服務跨域請求問題 2、在main.js中導入vue-jsonp import {VueJsonp} from 'vue-jsonp' Vue.use(VueJsonp);
到此這篇關於uniapp H5 https跨域請求實現的文章就介紹到這瞭,更多相關uniapp H5 https跨域內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- uniapp中常用的幾種提示彈框
- 深入淺析同源與跨域,jsonp(函數封裝),CORS原理
- JSONP跨域模擬百度搜索
- 微信小程序使用百度AI識別接口的通用封裝Promise詳解
- 微信小程序授權登錄的優雅處理方式