我开发了一个向服务器发送php请求的应用程序(ios和android)。出于安全原因,我需要确保用户无法在浏览器中键入相同的URL。只允许应用程序执行此请求。我一直在考虑进行javascript浏览器检测,我从ios得到了一个很好的结果,当它从应用程序调用时它回答“未知”。但对于Android,它总是回答“Android”,无论是在浏览器中还是在应用程序调用时。 有人知道如何在服务器端检测到这个吗?
答案 0 :(得分:1)
您可以检测用户代理字符串。这可以在PHP的服务器端使用:
完成$_SERVER['HTTP_USER_AGENT']
Android和iOS将返回包含“Mobile Safari”,“webkit”等内容的用户代理字符串。在您的应用中,告诉webview将用户代理设置为您已编写的专有内容。您可以使用以下代码在iOS上执行此操作 - 我希望Android具有类似的功能:
[request setValue:@"MyMadeUpUserAgentString" forHTTPHeaderField:@"User_Agent"];
然后在PHP中,只显示HTTP_USER_AGENT与您在应用中设置的值相匹配的页面。
当然它并不是非常安全 - 某些浏览器或浏览器插件会让你伪造你的用户代理。但它会阻止绝大多数用户在浏览器中看到内容。