我读了一些这样的帖子,这个和其他一些没有回应。然而,我似乎在这里找到了IOS设备的解决方案。
我需要拒绝来自任何设备的任何应用程序的任何http请求,只处理来自web浏览器的请求,所以主要问题是:
有一个明确的方法来判断一个HTTP请求是来自移动应用程序还是来自web浏览器?
感谢示例:我从移动/平板电脑(我正在开发wifi热点背后的应用程序)开始接收所有http请求,因此我处理来自Facebook应用程序,Whatsup应用程序和浏览器的请求。我不得不拒绝来自Facebook和Whatsup的请求,只处理来自浏览器的请求。Apps User-agent似乎和本地设备浏览器一样
你可以做一件事。从应用程序端设置自定义用户代理。
android和iphone都可以在web service调用请求时设置自定义user-agent。
AndroidDefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");
为Iphone NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc]
initWithURL:[NSURL URLWithString:[yourURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSString *userAgent = "iphone";
[urlRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"];
检查请求头,如果用户代理是"android"或"iphone"是来自应用程序,否则来自浏览器。
您可以在请求头中检查user-agent,我记得移动浏览器为user-agent发送不同的值,桌面浏览器发送不同的值。只需调试user-agent header并根据值进行验证。