настроить куки через лак

Я запускаю сайт Drupal 7 с использованием лака 3.

У нас есть 2 сайта: обычный сайт (example.com) и мобильный сайт (m.example.com).

Текущий поток сейчас таков, что когда пользователь заходит на обычный сайт через свое мобильное устройство, он будет перенаправлен на мобильный сайт напрямую.

Мы хотим дать пользователю возможность просматривать обычный сайт также через свое мобильное устройство.

Короче говоря: как мы закрепим печенье с помощью лака (важно, чтобы лак закрепил его, а не приложение).

Мы попробовали этот код:

sub_vcl{
  if (req.http.host ~ "^example\.com") {
    if (req.url ~   "^/(admissions|arts|aspaka|bog|cc|chemistry|GermanHistory|humanities|institutes|lifesci|peace|public-affairs)($|/)|~") {
      set req.backend = mondrian;
      set req.http.host = "exmpale.com";
    }
    else {
      if (req.http.cookie !~ "nomobi=true") {
        if (req.url ~ "nomobi=true") {
          set req.http.cookie = "nomobi=true";
        }
        else {
          call devicedetect;
          if (req.http.X-UA-Device ~ "^mobile" && req.url !~ "^/registration") {
            set req.http.location = "http://m.example.com" + req.url;
            error 750 ;
          }
        }
      }
    }
  }
}

но это не работает. Спасибо!


person doron    schedule 11.12.2013    source источник


Ответы (1)


Вы устанавливаете файл cookie запроса вместо файла cookie ответа, поэтому файл cookie передается серверной части, а не клиенту.


ВНИМАНИЕ:

Будьте осторожны при выполнении set req.http.cookie = "xxx", так как вы перезапишете файл cookie запроса и можете нарушить части сессии/аутентификации Drupal.


Короче говоря, вам нужно добавить заголовок Set-Cookie (beresp.http.set-cookie) в vcl_fetch или в vcl_deliver, что-то вроде:

...
if (req.http.cookie !~ "nomobi=true") {
  if (beresp.http.Set-Cookie) {
    set beresp.http.Set-Cookie = beresp.http.Set-Cookie + "nomobi=true; path=/; domain=your.cookie.domian.tld";
  } else {
    set beresp.http.Set-Cookie = "nomobi=true; path=/; domain=your.cookie.domian.tld";
  }
}
...

Вам нужно будет убедиться, что заголовок Set-Cookie является допустимым для вашего домена(ов).

person NITEMAN    schedule 12.12.2013