我使用NODE和EXPRESS开发了一个简单的REST API。我已经有了一个网络应用程序(浏览器)和本机移动应用程序。 现在我需要检查传入的请求是来自Web浏览器还是来自本机应用程序。
我已通过USER-AGENT
成功检测到来自浏览器的传入请求设备。
答案 0 :(得分:0)
适用于iOS的window.navigator.standalone和适用于Android的window.matchMedia('(display-mode: standalone)').matches
检测:
isInWebAppiOS = (window.navigator.standalone == true);
isInWebAppChrome = (window.matchMedia('(display-mode: standalone)').matches);
为每个设置一个cookie以传递给服务器。
<强>参考强>
Android 8.0 Compatibility Definition | Android Open Source Project
Issues - chromium - An open-source project to help move the web forward. - Monorail
143578 – Chrome: XMLHttpRequest executed in UIWebView encodes valid query string characters
iOS - Best Practices for Opening a Web Page Within an App - Outbrain Developer Center
How to transform xml with xslt and display it in Android webview
答案 1 :(得分:0)
我建议使用Host
标头。
例如:
如果您的Web应用程序托管在example.com
,则所有请求的Host标头都将设置为example.com
。
在您的移动应用程序中,您可以手动将所有请求标头设置为具有不同的主机标头,例如Host:app.example.com
。
一种好的做法是限制服务器接受的主机名集。
确保您没有对该头连接任何安全逻辑。每个HTTP客户端都可以伪造/覆盖该值。