NodeJS检测客户端(移动)是浏览器还是应用程序?



我用NODE和EXPRESS开发了一个简单的REST API。我已经有一个网络应用程序(浏览器)和一个本机移动应用程序。 现在我需要检查传入的请求是来自 Web 浏览器还是来自本机应用程序。

我已经成功检测到设备通过USER-AGENT来自浏览器的传入请求。

我建议使用Host标题。 例如: 如果 Web 应用程序托管在example.com则所有请求的 Host 标头都将设置为example.com。 在移动应用程序中,您可以手动将所有请求标头设置为具有不同的 Host 标头,如Host:app.example.com

最好使用服务器接受的一组有限的主机名。

确保不要将任何安全逻辑紧紧绑定到该标头。每个 HTTP 客户端都可以伪造/覆盖该值。

适用于 iOS 的 window.navigator.standalone 和适用于 Android 的window.matchMedia('(display-mode: standalone)').matches来检测这一点:

isInWebAppiOS = (window.navigator.standalone == true);
isInWebAppChrome = (window.matchMedia('(display-mode: standalone)').matches);

为每个cookie设置一个cookie以传递给服务器。

引用

  • 优化的 XML 内容表示 |介绍

  • 安卓 8.0 兼容性定义 | 安卓开源项目

  • 问题 - 铬 - 一个开源项目,帮助推动网络向前发展。 - 单轨电车

  • 143578 – Chrome:在UIWebView中执行的XMLHttpRequest对有效的查询字符串字符进行编码

  • 浏览器粉碎机:iOS UIWebView baseURL

  • iOS - 在应用中打开网页的最佳做法 - Outbrain 开发人员中心

  • CWE - CWE-749:暴露的危险方法或功能 (2.11)

  • 由 URL 方案扩展的攻击面 (pdf)

  • 在我们的 iOS 应用程序中实施 XSLT |距离,约克

  • 如何使用 xslt 转换 xml 并将其显示在 Android Web 视图中

  • 使用 iOS SDK 4.2 的 UIWebView 中的 XSLT

  • 通过JavaScript检测iPad/iPhone WebView

  • is-webview

相关内容

最新更新