2017-05-16 82 views
0

所以当一个正常的GET请求通过浏览器完成时,我认为浏览器是客户端。但是,当通过AJAX请求GET时,谁是客户端?我知道它仍然通过浏览器发生,但我想看看是否可以更细致地查看它。(概念)AJAX GET请求vs HTTP GET请求:技术上谁是客户端?

你可以说浏览器的javascript引擎是一个AJAX GET请求和一般GET请求的客户端,那么浏览器作为一个整体是一个客户端?我认为你可以说,只要浏览器的JavaScript引擎运行在不同的进程中。

谁能阐明这一点?

Wikipedia说上AJAX:

的XMLHttpRequest(XHR)是一个对象,其web浏览器和web服务器之间的方法 传送数据的形式的API。该对象是由浏览器的JavaScript环境提供的 。

+0

这是一样的东西。基本上用两个字来说,不同的是,正常的请求刷新页面,而Ajax不是 –

+0

你*可以说很多东西。但浏览器提出请求。 –

回答

2

让我们把它放在一个更广泛的场景:浏览器/网络服务器通信遵循Client–server model。从服务器的角度来看,客户端是一个IP地址+ IP端口,已经启动了http request

对http请求的回答将被发回到始发进程将对其进行管理的始发IP地址+ IP端口。

此过程是您的浏览器。它将接受内部管理它的答案。

浏览器可以启动客户端对多种协议类型的请求。通常HTTPHTTPS,也FTPFILE ...

XMLHttpRequest是 '只是' 一个API,由目前的浏览器是...

内部支持.. 。提供了在客户端和服务器之间传输数据的客户端功能。

[...]它可以可用于检索的任何类型的数据,而不仅仅是XML的,它支持比HTTP其他协议(包括FILEFTP)。

更多关于XMLHttpRequesthere

那么,恕我直言浏览器为任何类型的请求的客户端(HTTPGETHTTPPOST ...),不管它已通过Ajax/XMLHttpRequest或通过直接访问已启动一个URL。浏览器如何决定如何管理它,在概念上与客户端/服务器模型没有关系。

+0

好吧,这似乎是合理的。为什么我的开发工具会说这是一个xhr请求而不是GET请求?我知道一个xhr请求不是一个HTTP动词,但我的Chrome开发工具确实给了我这个想法。 –

+0

@MelvinR​​oest我的浏览器说这是一个XHR请求,但仍然告诉我什么类型。 –

+0

@MelvinR​​oest,编辑澄清。 – MarcM