我的应用程序中暴露了一堆REST API。我需要区分从UI客户端(用户单击按钮或提交表单)和从网络进行的调用进行的调用。例如,在mozilla浏览器中,用户可以打开网络选项卡并使用不同的参数调用API(只要用户仍然登录并在同一会话中)。无论如何我们可以在API实现中检查此调用是来自UI客户端还是仅来自REST客户端?提前谢谢。
答案 0 :(得分:0)
HTTP客户端可以通过 User-Agent 请求标头提供有关自己的信息。
请参阅RFC-1945: HTTP - User Agent
非浏览器客户端可以在执行REST请求时将自己的标识符/信息设置为User-Agent
请求标头,从而允许服务器根据使用的用户代理提供自定义内容的内容。
答案 1 :(得分:0)
没有办法区分。一旦用户通过身份验证,他们就会有一个会话,可以调用他们授权的服务并传入资源接受的任何参数。
如果我们假设没有人故意将其从REST客户端伪装,则在UI请求中添加数据以表明它可以在UI中运行,但是恶意的REST客户端可以发送相同的请求。