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

Express 如何判断请求是否来自 React Native 应用

如何通过 User-Agent 检测请求是否来自 React Native 应用

React Native 默认 User-Agent 特征

默认配置下,React Native 应用发起的所有网络请求(fetch、axios 等原生网络库调用),User-Agent 头都会携带 ReactNative 核心标识,后面会跟随RN版本、设备平台、系统版本等信息,示例如下:

ReactNative/0.71.8 (Android 13; Pixel 7 Build/TQ2A.230505.002)
ReactNative/0.72.0 (iPhone OS 16_5 like Mac OS X)

Node.js/Express 中的实现方法

你可以直接通过匹配 User-Agent 中的 ReactNative 关键词实现判断,推荐封装为中间件全局使用:

const express = require('express');
const app = express();

// RN 客户端检测中间件
const isReactNativeClient = (req, res, next) => {
  // 读取请求头中的 User-Agent,为空则默认返回非RN
  const userAgent = req.get('User-Agent') || '';
  // 转小写后匹配,避免大小写差异导致漏判
  req.isRN = userAgent.toLowerCase().includes('reactnative');
  next();
};

// 全局注册中间件,所有路由都可以直接读取 req.isRN 属性
app.use(isReactNativeClient);

// 路由内使用示例
app.get('/api/hello', (req, res) => {
  if (req.isRN) {
    res.json({ code: 0, msg: '请求来自 React Native 应用' });
  } else {
    res.json({ code: 0, msg: '请求来自非 RN 客户端' });
  }
});

app.listen(3000);

注意事项

  • 如果RN端开发者主动修改了默认的User-Agent,该检测逻辑会失效。这种场景建议和端侧约定专属自定义请求头(比如X-Client-Type: ReactNative)做判断,可靠性更高。
  • User-Agent 可以被任意伪造,该判断方式仅可用于普通的客户端类型区分,不能作为安全校验的依据。
  • 不要依赖ReactNative之外的其他UA字段做判断,不同RN版本、不同设备平台的UA后缀差异很大,只有ReactNative标识是稳定的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:03