由於剛接觸MUI框架,所以在跨域問題上花了一點時間。希望我的方式能幫你少走點彎路(大神就直接過里吧)!
首先,遇到這個問題,各種百度。其中說法最多的是將mui,js文件里的 setHeader('X-Requested-With', 'XMLHttpRequest'); 注釋掉。我這里沒有將其注釋,因為我相信,這個框架出來這么久了,不可能連這個問題都沒處理吧(不跨域,自己玩???)。
前端部分代碼:
1 //mui,js(Mui v3.7.0) 2 //------注意-------- 3 //1、調試需要在真機環境進行操作; 4 //2、mui本身是支持跨域訪問的(無需糾結跨域問題); 5 //3、請求API地址不能使用localhost 或者127.0.0.1之類的ip,只能使用實際的IP才能訪問。 6 var reqRootUrl = "http://192.168.1.217"; 7 mui.ajax({ 8 url: reqRootUrl + '/api/UserLogin/QueryAccount', 9 data: { 10 AccountName: "***", 11 Pwd: "***", 12 Company: "***" 13 }, 14 dataType: 'json', 15 type: 'post', 16 timeout: 30000, //超時時間設置為30秒; 17 headers: { 18 'Content-Type': 'application/json', 19 //"Authorization": "BasicAuth " + _ticket//傳遞基於“Basic基礎認證”令牌 20 }, 21 beforeSend: function () { 22 plus.nativeUI.showWaiting("正在請求數據...");//開啟加載提示 23 }, 24 complete: function () { 25 plus.nativeUI.closeWaiting();//關於加載提示 26 }, 27 success: function (data) { 28 //處理成功邏輯 29 mui.openWindow({ 30 url: 'defaule.html', 31 id: 'defaule.html', 32 extras: { 33 Ticket: data.Ticket//頁面傳遞參數 34 }, 35 waiting: { 36 autoShow: true, //自動顯示等待框,默認為true 37 title: '正在登錄...' //等待對話框上顯示的提示內容 38 } 39 }); 40 }, 41 error: function (xhr, type, errorThrown) { 42 plus.nativeUI.closeWaiting(); 43 var _error = ""; 44 switch (type) { 45 case "timeout": 46 _error = "服務器響應超時"; 47 break; 48 default: 49 _error = "異常信息:" + xhr.responseText; 50 break; 51 } 52 mui.toast(_error); 53 } 54 });
web api代碼:
//注意:web api對應的函數不能設置為static類型,否則無法調用(這個算是自己開發過程遇到的一個小細節吧)
[HttpPost]
[EnableCors(origins: "*", headers: "*", methods: "*")] public responseObj QueryAccount([FromBody]requestObj postJson) { responseObj rObj = new responseObj(); //to do logic
return rObj; }
關於web api跨域的問題,這里不做詳細說明,推薦一篇文章(這里已經很明細了)。
本文章會根據自己的開發過程,會做出適當更新。有什么不清楚的,可以直接留言給我。