我试图让用户代理调用使用瓶子微框架构建的API。使用浏览器直接调用API时,它会显示用户代理的内容。但是,当它从另一个应用程序调用时,例如在PHP或JAVA中,它不会显示用户代理。
无论请求是来自浏览器还是其他应用程序,我都可以获取IP地址
client_ip = request.environ.get('REMOTE_ADDR')
logging.info("Source IP Address: %s" %(client_ip)) #Works
browser_agent = request.environ.get('HTTP_USER_AGENT')
logging.info("Source Browser Type: %s" %(browser_agent)) #Doesn't work when called from an application
当我使用浏览器或邮递员称呼它时,它给我的结果如下:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.3
那么,是否有一个特殊参数可用于了解哪种类型的代理正在调用API?
答案 0 :(得分:1)
客户端无需发送User-agent
标头。您的浏览器正在发送一个(大多数情况下),但您的PHP和Java客户端(可能)不是。
如果您可以控制客户端,请为他们发出的每个请求添加用户代理标头。例如,在PHP中,请参阅this SO answer。