什么是跨域
跨域是瀏覽器的專用概念,指js代碼訪問自己來源站點之外的站點。愛掏網 - it200.com比如A站點網頁中的js代碼,請求了B站點的數據,就是跨域。愛掏網 - it200.com
A和B要想被認為是同域,則必須有相同的協議(比如http和https就不行)、相同域名、和相同端口號(port)。愛掏網 - it200.com
如果你是做App、小程序等非H5平臺,是不涉及跨域問題的。愛掏網 - it200.com
由于uni-app是標準的前后端分離模式,開發h5應用時如果前端代碼和后端接口沒有部署在同域服務器,就會被瀏覽器報跨域。愛掏網 - it200.com
本文主要介紹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' }); } })
如此這般,跨域功成。愛掏網 - it200.com
問題引申
有小伙伴問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跨域內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。