有没有办法检测从哪个源调用API?

时间:2015-04-24 12:42:44

标签: web-services api service asp.net-web-api

是否有任何方法可以确定调用API的来源? source是指IOS应用程序,Web应用程序,如页面或按钮单击(Aja​​x调用等)。

虽然在调用api的同时保存了一个像(?source = ios或?source = webapp)这样的标志,但我只是想知道还有其他更好的选择来完成这个吗?

我也觉得这个要求很奇怪,因为一般来说,很多用户都会使用App或Web应用程序,因此很难监控那些API调用。

请提出宝贵的建议。

1 个答案:

答案 0 :(得分:6)

没有完美的方法来解决这个问题。指定一个特殊标志不会解决您的问题,因为消费者可以放入任何她想要的东西,但您无法确定它是否合法。如果您为不同的消费者发布不同的API密钥,情况也是如此 - 您永远不知道他们是否决定将其关闭。

我想到的唯一选择是分析HTTP标头,看看你能从中推断出什么。您可能知道典型的HTTP标头看起来像这样:

enter image description here

您可以尝试查看来自所有来源的请求在您的情况下有何不同,并决定是否可以可靠地区分它们。如果您有开发客户端的奢侈(即,这不是公共API),您可以为不同的源设置自定义用户代理字符串。

但请记住,Referrer不是强制性的,因此它不是非常可靠,并且用户代理也可能是欺骗性的。所以这是一个比没有好的解决方案,但它并非100%可靠。

希望这会有所帮助,这里也是similar question。祝你好运!