1

我读了一些这样的帖子这个其他一些没有回应。但是,我似乎在这里找到了 IOS 设备的解决方案。

我需要拒绝来自任何设备的任何应用程序的任何 http 请求,并且只处理来自网络浏览器的请求,所以主要问题是:

有一种确定的方法来判断 HTTP 请求是来自移动应用程序还是来自 Web 浏览器?

谢谢

示例:我从手机/平板电脑接收所有 http 请求(我正在开发 wifi 热点后面的应用程序),所以我处理来自 Facebook 应用程序、Whatsup 应用程序和浏览器的请求。我必须拒绝来自 Facebook 和 Whatsup 的请求,只处理来自浏览器的请求。应用程序用户代理似乎与本机设备浏览器相同。

4

2 回答 2

3

你可以做一件事。从应用程序端设置自定义用户代理。

您可以在 web 服务调用请求期间在 android 和 iphone 中设置自定义用户代理。

安卓版

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");

苹果手机

NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] 
                                       initWithURL:[NSURL URLWithString:[yourURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSString *userAgent = "iphone";
[urlRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"];

如果用户代理是“android”或“iphone”来自应用程序,则检查请求标头,否则来自浏览器。

于 2014-08-06T09:24:52.907 回答
1

您可以在请求标头中检查用户代理,我记得移动浏览器为用户代理发送不同的值,而桌面浏览器发送不同的值。只需调试用户代理标头并根据值进行验证。

于 2014-08-06T09:05:42.877 回答