首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HAProxy中创建持久cookie

在HAProxy中创建持久cookie
EN

Server Fault用户
提问于 2016-05-19 02:11:16
回答 1查看 6.9K关注 0票数 2

我正在使用HAProxy进行A/B测试,下面是我的HAProxy配置的片段

代码语言:javascript
复制
listen  http 127.0.0.1:8080
    maxconn 18000

    use_backend a-version-backend if { req.cook(SITEID) -m beg a_version }
    use_backend b-version-backend if { req.cook(SITEID) -m beg b_version } 
    default_backend ab-test

backend ab-test
    balance roundrobin
    cookie SITEID insert indirect nocache maxlife 48h

    server server1 10.0.0.2:80 weight 25 cookie a_version
    server server2 10.0.0.3:80 weight 25 cookie a_version
    server server3 10.0.0.4:80 weight 50 cookie b_version

在阅读了这些文档之后,我意识到HAProxy只能创建会话cookie。是否可以在HAProxy中创建持久cookie?

====更新====

抱歉,我的意思是持久性cookie (更新了我的问题) https://en.wikipedia.org/wiki/HTTP_cookie#Persistent_饼干

这是HAProxy设置的cookie。它没有到期日,浏览器将将其视为会话cookie https://en.wikipedia.org/wiki/HTTP_cookie#Session_饼干

会话cookie的问题是当用户关闭浏览器时,它将删除cookie。这是不能接受的A/B测试,因为他们可能会回来网站几天后,分析跟踪将他们视为不同的人。

这是Facebook持久曲奇的一个例子。它有到期日。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-05-23 01:02:48

我成功地使用将HAProxy会话cookie转换为持久cookie。

由于GTM在这两个应用程序中都可用,我只需要创建javascript代码就可以将cookie转换为持久cookie。

下面是我在GTM中输入的代码:

代码语言:javascript
复制
<script type="text/javascript">
(function() {
  function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/";
  }

  function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return "";
  }

  if(getCookie('SITEID').length !== 0) {
    setCookie('SITEID', getCookie('SITEID'), 365);
  }
})();  
</script>

代码基本上检查您是否有SITEID。如果你有饼干,它将把有效期定为一年。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/777664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档