正在检测从android应用程序调用的URL


Detecting URL called from android app

我开发了一个应用程序(ios和android),可以向服务器发出php请求。出于安全考虑,我需要确保用户不能在浏览器中键入相同的URL。应该只允许应用程序执行此请求。我一直在考虑进行javascript浏览器检测,我在ios上得到了一个很好的结果,当从应用程序调用时,它会回答"未知"。但对于安卓,无论是在浏览器中还是在应用程序调用时,它都会回答"安卓"。有人知道如何在服务器端检测到这一点吗?

您可以检测到用户代理字符串。这可以在PHP的服务器端使用来完成

$_SERVER['HTTP_USER_AGENT']

Android和iOS将返回一个用户代理字符串,其中包含"Mobile Safari"、"webkit"等内容。在你的应用程序中,告诉webview将用户代理设置为你编造的专有内容。你可以用以下代码在iOS上做到这一点-我希望Android也有类似的东西:

[request setValue:@"MyMadeUpUserAgentString" forHTTPHeaderField:@"User_Agent"];

然后,在PHP中,只有HTTP_USER_AGENT与您在应用程序中设置的值匹配时才显示页面。

当然,它并不是非常安全——一些浏览器或浏览器插件会让你伪造你的用户代理。但它将阻止绝大多数用户在浏览器中看到内容。