收藏
回答

小程序的wx.request请求,必须是https吗?

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx37574aa05f808086 2.4.2

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


这个问题解决了吗

还有 只能通过域名访问吗 ?如果我想加入自己服务器的端口,怎么设置端口

回答关注问题邀请回答
收藏

4 个回答

  • 小程序商城定制开发2600元全包
    小程序商城定制开发2600元全包
    05-07

    网络

    在小程序/小游戏中使用网络相关的 API 时,需要注意下列问题

    1. 服务器域名配置

    每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。包括普通 HTTPS 请求、上传文件、下载文件和 WebSocket 通信。

    从基础库 2.4.0 开始,网络接口允许与局域网 IP 通信,但要注意 不允许与本机 IP 通信

    从 2.7.0 开始,提供了 UDP 通信(wx.createUDPSocket)。

    配置流程

    服务器域名请在 「小程序后台-开发-开发设置-服务器域名」 中进行配置,配置时需要注意:

    2. 网络请求

    超时时间

    • 默认超时时间和最大超时时间都是 60s
    • 超时时间可以在 app.json 或 game.json 中通过 networktimeout 配置。

    使用限制

    • 网络请求的 referer header 不可设置。其格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本;
    • wx.requestwx.uploadFilewx.downloadFile 的最大并发限制是 10 个;
    • wx.connectSocket 的最大并发限制是 5 个。
    • 小程序进入后台运行后,如果 5s 内网络请求没有结束,会回调错误信息 fail interrupted;在回到前台之前,网络请求接口调用都会无法调用。

    返回值编码

    • 建议服务器返回值使用 UTF-8 编码。对于非 UTF-8 编码,小程序会尝试进行转换,但是会有转换失败的可能。
    • 小程序会自动对 BOM 头进行过滤(只过滤一个BOM头)。

    回调函数

    • 只要成功接收到服务器返回,无论 statusCode 是多少,都会进入 success 回调。请开发者根据业务逻辑对返回值进行判断。

    3. 常见问题

    HTTPS 证书

    小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

    对证书要求如下:

    • HTTPS 证书必须有效;证书必须被系统信任,即根证书被已系统内置
    • 部署 SSL 证书的网站域名必须与证书颁发的域名一致
    • 证书必须在有效期内
    • 证书的信任链必需完整(需要服务器配置)
    • iOS 不支持自签名证书;
    • iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求;
    • TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持 1.2 及以下版本;
    • 部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。Chrome 56/57 内核对 WoSign、StartCom 证书限制周知
    证书有效性可以使用 openssl s_client -connect example.com:443 命令验证,也可以使用其他在线工具

    除了网络请求 API 外,小程序中其他 HTTPS 请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。


    05-07
    有用 1
    回复
  • var 友原
    var 友原
    2019-05-22

    是要写端口,比如你要请求的接口是www.xxx.com:8080/wx/openId,那么你的合法域名就要配www.xxx.com:8080,端口要带上,不然请求不了

    2019-05-22
    有用
    回复 1
    • 冯哲🐔
      冯哲🐔
      2019-05-22

      阿里嘎多

      2019-05-22
      回复
  • 痛快科技
    痛快科技
    2019-05-22


    2019-05-22
    有用
    回复 2
    • 冯哲🐔
      冯哲🐔
      2019-05-22

      是你要把自己的合法域名  也设置成带端口的吗?

      2019-05-22
      回复
    • 痛快科技
      痛快科技
      2019-05-23回复冯哲🐔

      请求地址带端口,则需要配置带端口

      2019-05-23
      回复
  • 祺爸💎
    祺爸💎
    2019-05-21

    https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html

    2019-05-21
    有用
    回复 1
    • 云D旋律
      云D旋律
      06-09
      还是官api说的清楚明白。谢谢!
      06-09
      回复
登录 后发表内容