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!

推薦閱讀: