2011-07-29 69 views
1

有两个GET请求:GET请求之间的区别?

1)“通常”GET(涉及重新加载页面)。 2)ajax GET(同步,异步)后台请求。

他们之间有什么不同? HTTP标准是否在他们之间做了区分?

回答

3

不,没有区别。尽管一些浏览器和一些框架(如jQuery)会发送额外的头文件,所以如果您愿意,可以进行区分。否则,他们处理相同。

1

不,HTTP标准没有区分它们。该区别适用于浏览器级别。

基本上,最大的区别是通过XMLHttpRequest(“ajax”请求)的请求受制于Same Origin Policy。正常的GET不是。这意味着,在正常情况下,您不能使用真正的“ajax”请求从不同于您的脚本运行的页面获取资源。 (请注意,这是在其你的脚本运行的页面的起源,脚本文件的来源,这可以从任何地方。)

有办法在“AJAX”可以用来甚至跨-origin:

  • Cross Origin Resource Sharing(CORS)是由W3C定义并由一些浏览器实现的新的(ish)技术。它允许请求的资源作出是否允许自己被请求文档使用的决定。受所有主流浏览器的最新版本支持,虽然IE的支持已损坏要求您使用其专有的XDomainRequest对象而不是XMLHttpRequest
  • JSON-P围绕这个限制工作,根本不是“ajax”请求;相反,这是客户端和服务器都遵循的惯例,允许客户端通过script元素从服务器包含脚本。 (有问题的脚本通常是动态生成的,其唯一的工作是通过调用函数将JavaScript对象作为有效载荷提供。)
+0

我以为相同原点策略只适用于POST请求。 – GolezTrol

+0

@Golez:不,它适用于所有'XMLHttpRequest'生成的(例如“ajax”)请求,无论是GET还是POST还是PUT或DELETE等等。您可能会想到JSON- P,这是一个围绕SOP的末端运行(实际上并不是一个“ajax”调用),但仅适用于“GET”(因为它的核心就是将一个脚本文件添加到文档中)。 –

+0

感谢您的理解。你赢得了我的+1 – GolezTrol

相关问题