我用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