【问题标题】:Google Analytics uses gif get request why not post request?Google Analytics 使用 gif 获取请求为什么不发布请求?
【发布时间】:2013-03-11 09:59:01
【问题描述】:

Google AnalyticsGet 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 的情况下,参数将存储在浏览器历史记录或网络服务器日志中。

有人能给出任何支持性的理由,为什么Google Analytics 取决于这两个东西吗?

【问题讨论】:

  • “通过 get 请求发送数据会导致安全问题。”为什么?如果您的意思是写入代理日志,那么恶意代理操作员也不能捕获 POST 正文吗?

标签: http-post httprequest google-analytics-api http-get web-analytics


【解决方案1】:

Because GET requests is what you use for retrieving information that does not alter stuff.

请注意,使用 POST 有很多缺点,浏览器通常会警告不要重新加载通过 POST 请求的资源(以防止重复数据输入),不会缓存 POST 请求(这就是一些分析滥用它的原因),代理等。

如果您想使用 URL 检索大量数据(建议:重新考虑是否有更好的选择),那么有必要使用来自Wikipedia 的帖子:

有时 HTTP GET 甚至不适合数据检索。例如,需要在 URL 中指定大量数据时。浏览器和 Web 服务器可以对它们将处理的 URL 的长度进行限制,而不会出现截断或错误。 URL 和查询字符串中保留字符的百分比编码可以显着增加它们的长度,虽然 Apache HTTP Server 可以处理 URL 中多达 4,000 个字符,但 Microsoft Internet Explorer 限制为任何 URL 中的 2048 个字符。同样,在必须提交敏感信息(例如用户名和密码)以及其他数据以完成请求的情况下,不应使用 HTTP GET。在这些情况下,即使使用 HTTPS 加密消息正文,URL 中的数据也会以明文形式传递,并且许多服务器、代理和浏览器会以第三方可能看到的方式记录完整的 URL。在这些情况下,应该使用 HTTP POST。

【讨论】:

  • 不太清楚。考虑如果我们正在请求图像并且我们将更改页面右侧的内容,以显示检索到的有关图像的信息?我很欣赏提供的link。如果你能简要介绍一下会更有帮助..
  • 如果您使用加载图像的事实来更改服务器上的数据,那么是的,使用 POST 是完全有效的。
  • 在这种情况下,您正在专门创建新信息,跟踪服务器上的信息。你并不真正关心图像,它只是一种避免en.wikipedia.org/wiki/Same-origin_policy的手段。
【解决方案2】:

POST 请求需要一个 ajax 调用,并且由于 http://en.wikipedia.org/wiki/Same-origin_policy 而无法工作。但是图片很容易跨站,所以他们只需要在 DOM 中添加一个带有所需 url 的 img 标签,浏览器就会加载它,将所需的信息发送到他们的服务器进行跟踪。

【讨论】:

  • 但是 Google 很容易将通配符 CORS 标头添加到其图像服务器以使跨站点内容适用于 POST。
  • 问题是你必须将它添加到请求发起的服务器(en.wikipedia.org/wiki/…)。浏览器说“我只允许对这个站点的请求,或者这个站点告诉我他们信任的站点。”他们要求所有想要使用其跟踪的域添加 CORS 标头是不切实际的(大多数用户没有访问权限或知识来执行此操作。)
  • 我认为它的工作方式是相反的,所以谷歌端只需要额外的标题。您的链接显示“请注意,在 CORS 架构中,ACAO 标头由外部 Web 服务 (bar.com) 设置,而不是原始 Web 应用程序服务器 (foo.com)。”
  • 看来你是对的。我误解了。但是,如果您查看caniuse.com/#feat=cors,似乎传统上并非所有浏览器都支持它。有了图像像素,每个人都会支持它。
猜你喜欢
  • 2012-04-02
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多