Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何区分UI客户端和REST客户端的REST API调用_Rest_Api - Fatal编程技术网

如何区分UI客户端和REST客户端的REST API调用

如何区分UI客户端和REST客户端的REST API调用,rest,api,Rest,Api,我的应用程序中公开了一堆RESTAPI。我需要区分从UI客户端发出的调用(用户单击按钮或提交表单)和从网络发出的调用。例如,在mozilla浏览器中,用户可以打开“网络”选项卡并使用不同的参数调用API(只要用户仍在同一会话中登录)。我们是否可以在API实现中检查此调用是来自UI客户端还是仅来自REST客户端?提前感谢。HTTP客户端可以通过用户代理请求头提供关于自己的信息 看 在执行REST请求时,非浏览器客户端可以将自己的标识符/信息设置为用户代理请求头,从而允许服务器根据消费用户代理提供定

我的应用程序中公开了一堆RESTAPI。我需要区分从UI客户端发出的调用(用户单击按钮或提交表单)和从网络发出的调用。例如,在mozilla浏览器中,用户可以打开“网络”选项卡并使用不同的参数调用API(只要用户仍在同一会话中登录)。我们是否可以在API实现中检查此调用是来自UI客户端还是仅来自REST客户端?提前感谢。

HTTP客户端可以通过用户代理请求头提供关于自己的信息


在执行REST请求时,非浏览器客户端可以将自己的标识符/信息设置为
用户代理
请求头,从而允许服务器根据消费用户代理提供定制的尾部内容。

无法区分。一旦用户通过身份验证,他们就有一个会话,可以调用他们授权的服务,并传入资源接受的任何参数


如果我们假设没有人故意从REST客户端伪造它,那么在UI请求中添加数据以表明它来自UI会起作用,但是邪恶的REST客户端可以发送相同的请求。

您可以在客户端请求中添加HTTP头。您不认为这会有帮助,因为当用户通过浏览器“重发”按钮发送请求时,会传递相同的头吗?你所要求的只是区分UI/浏览器和REST客户端是的,没错,但是不能修改任何请求来实现这一点吗?@RobertBain:是的,当然,任何客户端都可以任意设置或伪造该头。请参阅:我检查了用户代理头。。再次,当我从浏览器重新发送请求时,它正在复制从UI客户端传递的所有头。用户代理:Mozilla/5.0(Windows NT 6.1;Win64;x64;rv:59.0)Gecko/20100101 Firefox/59.0我想知道请求来自何处是多么重要。我想,如果您有一个公共RESTAPI,您就可以根据登录数据知道谁是谁,并且他们已经得到足够的信任,可以访问。我无法想象,如果假装是UI调用,就会有很多攻击向量刺激人,而且,他们怎么知道要添加什么标题。@ SBB,我看到的问题是,其余的请求对以前的请求一无所知。也许您可以为用户分配角色。有一个网络用户和一个UI用户,只让他们执行某些操作?