跟踪来自特定来源的用户

Cam*_*mel 11 javascript jquery tracking get http

我正在向向我们发送其他访问者的用户进行促销活动.这是在客户端完成的.

我可以使用动态GET参数来做到这一点,例如,http://www.mysite.com?app_source=user_id或者我可以使用哈希来做到这一点,例如http://www.mysite.com#app_source,user_id.

这些方法有任何优缺点吗?

mač*_*ček 8

为GET请求执行此操作的标准方法是简单地使用查询字符串.

http://www.mysite.com?app_source=user_id
Run Code Online (Sandbox Code Playgroud)

如果您使用URL锚点,例如

http://www.mysite.com#app_source,user_id
Run Code Online (Sandbox Code Playgroud)

锚部分(#app_source,user_id)不会发送到服务器

例如,请参阅此相关问题.

这是另一个相关的问题

锚点只是一个客户端标志,用于告诉浏览器在页面上导航的位置.


要解决重定向问题,可以在重定向,添加/删除和所需的键/值对之前处理查询字符串,然后重定向.

PHP允许您直接访问查询字符串 $_SERVER['QUERY_STRING']

Rails使用request.uri你可以解析的

此外,当你看到奇怪的事情facebook.com/#stuff,锚点部分是用客户端javascript处理的.所以你可以这样做,但是你将编写一个正在发送普通GET请求的Ajax代码,就像在这个答案的顶部推荐的那样.

为何增加复杂性?你喜欢的外观#比那更好?吗?


tsk*_*zzy 7

使用这种?方法.为什么?因为这就是你应该如何在页面之间传递任意数据.

# 专门用于页面锚点.

除了语义和最佳实践之外,还有一个实际的原因.想想当用户将访问者发送到页面上的锚点时会发生什么.您将无法使用哈希方法(至少不是以简单的方式).

所以我会按照这里概述的方法:

function $_GET(q,s) {
    s = s ? s : window.location.search;
    var re = new RegExp('&'+q+'(?:=([^&]*))?(?=&|$)','i');
    return (s=s.replace(/^?/,'&').match(re)) ? (typeof s[1] == 'undefined' ? '' : decodeURIComponent(s[1])) : undefined;
}

var app_source = $_GET('app_source');
Run Code Online (Sandbox Code Playgroud)

然后你可以有这样的URL: http://www.mysite.com?app_source=user_id#anchor


cor*_*ard 5

请求参数

  • Google Analytics,服务器日志等都会记录该网址,这可能有助于以后的分析.
  • 多个网址使缓存变得更加困难,并且很可能会让Google感到困惑

哈希

  • 分析和服务器日志不会看到/关注哈希参数

语义处理这种方式可能是通过查询字符串参数,但它不是很强烈.如果上面列出的点都不相关,我可能会坚持使用查询字符串,因为它更常见.

如果您的意思是构建其他人集成的服务,并且您不希望他们必须将信息传递回他们的应用程序(通过查询字符串),那么使用哈希参数似乎是一个可靠的选项.