You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同局域网Android设备无法调用本地Serverless Offline NodeJS接口

问题背景

本地搭建基于Serverless框架的NodeJS服务,本机浏览器、Postman调用接口可正常响应,同一局域网内的Android设备发起调用时访问失败。
相关配置、代码及报错信息如下:

serverless.yml配置

service: aws-debug-locally

frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs12.x

plugins:
  - serverless-offline

custom:
  serverless-offline:
    httpsProtocol: "cert"
    noPrependStageInUrl: true

functions:
  hello:
    handler: index.handler
    events:
      - http:
          path: /hello
          method: any

服务启动后默认接口地址为https://localhost:3000/hello,本机调用正常返回结果。

Android端调用代码

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded/json/gzip';
axios.defaults.headers.post.Authorization = token;

const url = 'https://localhost:3000/hello';
return axios.post(url, compressedData, {
  onUploadProgress: progressEvent => {
    console.log('uploading')
  },
  onDownloadProgress: progressEvent => {
    console.log('downloading')
  },
}).then((response) => {
});

报错信息

Android Studio抛出错误日志:

E/Capacitor/Console: File: http://localhost/vendor.js - Line 2519 - Msg: ERROR Error: Uncaught (in promise): Error: Network Error
    Error: Network Error

polyfills.js:3467          POST https://localhost:3000/hello net::ERR_CONNECTION_REFUSED

Chrome调试检查器可查看到对应网络错误报错。

解决方案

报错核心是ERR_CONNECTION_REFUSED即连接被拒绝,按以下步骤逐一排查修复:

  • 修正地址错误:localhost是设备本地回环地址,Android端代码里写的localhost指向Android设备自身,不是运行服务的电脑。
    1. 查询运行服务的电脑在当前局域网的IPv4地址:Windows系统执行ipconfig,macOS/Linux系统执行ip a,找到和Android设备同网段的地址,一般为192.168.x.x格式。
    2. 修改serverless-offline配置,让服务监听所有网卡,默认配置下服务仅监听127.0.0.1回环地址,局域网设备无法访问。在custom.serverless-offline下新增host: '0.0.0.0'配置:
      custom:
        serverless-offline:
          httpsProtocol: "cert"
          noPrependStageInUrl: true
          host: '0.0.0.0'
      
    3. 重启Serverless服务,将Android端请求地址中的localhost替换为上一步查到的电脑局域网IP,例如https://192.168.3.12:3000/hello。
      *如果使用Android模拟器而非真机,模拟器访问宿主机的默认地址为10.0.2.2,无需查询局域网IP,直接将地址替换为对应格式即可,同时仍需配置服务监听0.0.0.0。
  • 排查HTTPS证书问题:当前配置开启了自签名HTTPS证书,Android系统默认不信任用户自签名证书,会直接拦截请求。本地调试阶段可直接删除httpsProtocol: "cert"配置,改用HTTP协议发起请求,地址对应改为http://[电脑局域网IP]:3000/hello即可绕过证书校验;如果必须使用HTTPS,可将自签名证书导入Android设备的系统信任证书列表,或在调试阶段临时关闭Axios的SSL校验(正式发布版本禁止使用该配置)。
  • 排查防火墙拦截:检查电脑的系统防火墙(Windows Defender、macOS防火墙等)规则,确认3000端口的入站连接已放开,可临时关闭防火墙测试连通性,测试通过后再添加对应端口的放行规则。

内容的提问来源于stack exchange,提问作者user19517065

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:09:25