小程序局域網(wǎng)通信API插件使用說明
小程序局域網(wǎng)通信API插件使用說明,小程序基礎(chǔ)庫2.4.0提供了wx.startLocalServiceDiscovery等一系列mDNS API,可以用來獲取局域網(wǎng)內(nèi)提供 mDNS 服務(wù)的設(shè)備的IP。wx.request/wx.connectSocket/wx.uploadFile/wx.downloadFile的url參數(shù)允許為 ${IP}:${PORT}/${PATH} 的格式,當(dāng)且僅當(dāng)IP與手機(jī)IP處在同一網(wǎng)段且不與本機(jī)IP相同(一般來說,就是同一局域網(wǎng),如連接在同一個(gè)wifi下)時(shí),請(qǐng)求/連接才會(huì)成功。 在這種情況下,不會(huì)進(jìn)行安全域的校驗(yàn),不要求必須使用 https/wss,也可以使用 http/ws。
服務(wù)器域名配置 每個(gè)微信小程序需要事先設(shè)置一個(gè)通訊域名,小程序只可以跟指定的域名與進(jìn)行網(wǎng)絡(luò)通信。包括普通 HTTPS 請(qǐng)求(request)、上傳文件(uploadFile)、下載文件(downloadFile) 和 WebSocket 通信(connectSocket) 配置流程 服務(wù)器域名請(qǐng)?jiān)?「小程序后臺(tái)-設(shè)置-開發(fā)設(shè)置-服務(wù)器域名」 中進(jìn)行配置,配置時(shí)需要注意: 域名只支持 https (request、uploadFile、downloadFile) 和 wss (connectSocket) 協(xié)議; 域名不能使用 IP 地址或 localhost; 域名必須經(jīng)過 ICP 備案; 出于安全考慮,api.weixin.qq.com 不能被配置為服務(wù)器域名,相關(guān)API也不能在小程序內(nèi)調(diào)用。 開發(fā)者應(yīng)將 appsecret 保存到后臺(tái)服務(wù)器中,通過服務(wù)器使用 appsecret 獲取 accesstoken,并調(diào)用相關(guān) API; 對(duì)于每個(gè)接口,分別可以配置最多 20 個(gè)域名。
HTTPS 證書,小程序必須使用 HTTPS 發(fā)起網(wǎng)絡(luò)請(qǐng)求。請(qǐng)求時(shí)系統(tǒng)會(huì)對(duì)服務(wù)器域名使用的 HTTPS 證書進(jìn)行校驗(yàn),如果校驗(yàn)失敗,則請(qǐng)求不能成功發(fā)起。由于系統(tǒng)限制,不同平臺(tái)對(duì)于證書要求的嚴(yán)格程度不同。為了保證小程序的兼容性,建議開發(fā)者按照最高標(biāo)準(zhǔn)進(jìn)行證書配置,并使用相關(guān)工具檢查現(xiàn)有證書是否符合要求。 對(duì)證書要求如下: HTTPS 證書必須有效; 證書必須被系統(tǒng)信任,即根證書被已系統(tǒng)內(nèi)置 部署 SSL 證書的網(wǎng)站域名必須與證書頒發(fā)的域名一致 證書必須在有效期內(nèi) 證書的信任鏈必需完整(需要服務(wù)器配置) iOS 不支持自簽名證書; iOS 下證書必須滿足蘋果 App Transport Security (ATS) 的要求; TLS 必須支持 1.2 及以上版本。部分舊 Android 機(jī)型還未支持 TLS 1.2,請(qǐng)確保 HTTPS 服務(wù)器的 TLS 版本支持 1.2 及以下版本; 部分 CA 可能不被操作系統(tǒng)信任,請(qǐng)開發(fā)者在選擇證書時(shí)注意小程序和各系統(tǒng)的相關(guān)通告。 Chrome 56/57 內(nèi)核對(duì) WoSign、StartCom 證書限制周知 證書有效性可以使用 openssl s_client -connect example.com:443 命令驗(yàn)證,也可以使用其他在線工具。 除了網(wǎng)絡(luò)請(qǐng)求 API 外,小程序中其他 HTTPS 請(qǐng)求如果出現(xiàn)異常,也請(qǐng)按上述流程進(jìn)行檢查。如 https 的圖片無法加載等。
網(wǎng)絡(luò)請(qǐng)求 超時(shí)時(shí)間 默認(rèn)超時(shí)時(shí)間和最大超時(shí)時(shí)間都是 60s; 超時(shí)時(shí)間可以在 app.json 中配置。 使用限制 網(wǎng)絡(luò)請(qǐng)求的 referer header 不可設(shè)置。其格式固定為 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 為小程序的 appid,{version} 為小程序的版本號(hào),版本號(hào)為 0 表示為開發(fā)版、體驗(yàn)版以及審核版本,版本號(hào)為 devtools 表示為開發(fā)者工具,其余為正式版本; request、uploadFile、downloadFile 的最大并發(fā)限制是 10 個(gè); 小程序進(jìn)入后臺(tái)運(yùn)行后(非置頂聊天),如果 5s 內(nèi)網(wǎng)絡(luò)請(qǐng)求沒有結(jié)束,會(huì)回調(diào)錯(cuò)誤信息 fail interrupted;在回到前臺(tái)之前,網(wǎng)絡(luò)請(qǐng)求接口調(diào)用都會(huì)無法調(diào)用。 返回值編碼 建議服務(wù)器返回值使用 UTF-8 編碼。對(duì)于非 UTF-8 編碼,小程序會(huì)嘗試進(jìn)行轉(zhuǎn)換,但是會(huì)有轉(zhuǎn)換失敗的可能。 小程序會(huì)自動(dòng)對(duì) BOM 頭進(jìn)行過濾(只過濾一個(gè)BOM頭)。 回調(diào)函數(shù) 只要成功接收到服務(wù)器返回,無論 statusCode 是多少,都會(huì)進(jìn)入 success 回調(diào)。請(qǐng)開發(fā)者根據(jù)業(yè)務(wù)邏輯對(duì)返回值進(jìn)行判斷。
插件調(diào)用 API 的限制 插件可以調(diào)用的 API 與小程序不同,主要有兩個(gè)區(qū)別: 插件的請(qǐng)求域名列表與小程序相互獨(dú)立; 一些 API 不允許插件調(diào)用(這些函數(shù)不存在于 wx 對(duì)象下)。 wx.login 和 wx.requestPayment 在插件中不能使用,但可以通過插件功能頁來 獲得用戶信息 和 進(jìn)行支付 ,請(qǐng)參考插件功能頁。
掃二維碼手機(jī)查看該文章