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

Ram*_*u.d 5 api service web-services asp.net-web-api

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

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

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

请提出宝贵的建议.

Pla*_*rov 6

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

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

在此输入图像描述

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

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

希望这有帮助,这也是一个类似的问题.祝好运!