Google Analytics使用Get Request
为.gif image服务器
http://www.google-analytics.com/__utm.gif?utmwv=4&utmn=769876874&utmhn=example.com&utmcs=ISO-8859-1&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=...
我们可以观察到所有参数都是在这个Get Request
中发送的,并且请求的图像没有找到有用的地方(Its just 1px by 1px Image)
已知信息:如果请求查询字符串很大,那么Google将使用Post Request
。
现在问题是为什么Post Request
总是不管查询字符串是否大而不管。
通过Get Request
发送数据会导致安全问题。因为,在Get Request
的情况下,参数将存储在浏览器历史记录或Web服务器日志中。
有人可以给出任何支持性的理由,为什么Google Analytics依赖于这两件事情?
Because GET requests is what you use for retrieving information that does not alter stuff.
请注意,POST的使用有一些缺点,浏览器通常会警告不要重新加载通过POST请求的资源(以防止双重数据输入),POST请求不会被缓存(这是一些分析滥用它的原因),代理等。
如果你想使用URL检索大量数据(建议:重新考虑是否有更好的选择),那么有必要使用来自Wikipedia的post:
有时甚至HTTP GET也不太适合数据检索。这方面的一个例子是需要在URL中指定大量数据。浏览器和Web服务器可以限制它们将处理的URL的长度而不会截断或错误。 URL和查询字符串中保留字符的百分比编码可以显着增加其长度,而Apache HTTP Server可以处理URL中最多4,000个字符,Microsoft Internet Explorer在任何URL中限制为2048个字符。同样,如果必须提交敏感信息(如用户名和密码)以及其他数据以完成请求,则不应使用HTTP GET。在这些情况下,即使使用HTTPS加密邮件正文,URL中的数据也将以明文形式传递,许多服务器,代理和浏览器将以第三方可见的方式记录完整的URL。在这些情况下,应使用HTTP POST。
POST请求需要ajax调用,因为http://en.wikipedia.org/wiki/Same-origin_policy而无法正常工作。但是图像可以很容易地跨站点,因此他们只需要使用所需的URL向DOM添加img标记,浏览器将加载它,将所需信息发送到他们的服务器进行跟踪。