我在研究Laravel 5.4.30。
假设我们有一个域example.com和一个dev.example.com子域。主域为主分支,开发子域为开发分支。我们有cookie通知系统,它将在单击Hide Cookie Notice按钮后隐藏。这是通过设置一个永久的cookie来实现的。我们已经将SESSION_DOMAIN信任设置为每个环境的每个域。
对于主域:
SESSION_DOMAIN=example.com对于dev子域:
SESSION_DOMAIN=dev.example.com现在问题就在这里。如果我们转到example.com并单击隐藏cookie通知,将永久为主域设置cookie。在那之后,我们去dev.example.com并做同样的事情。因此,cookie也将被设置为子域。但是这个曲奇是在前一个之后设置的。(订单是重要的)现在,如果我们刷新子域,我们将再次看到通知!(而不是隐藏的)由于浏览器中cookie的.example.com参数设置了domain,浏览器读取了主cookie,因此每个子域都会受到影响。但是视图仍然显示通知,因为它不能读取任何用于隐藏的cookie。
无论如何,我不想在所有的子域上分享这个曲奇。我怎样才能做到这一点?我想我应该为曲奇名字加上一个前缀。但我不知道该怎么做,那只拉拉自动在曲奇名字上加上前缀。
有什么解决办法吗?
发布于 2017-08-22 17:35:05
您可以根据环境设置cookie名称的前缀。
首先,将COOKIE_PREFIX添加到env文件中。
COOKIE_PREFIX=dev然后,在设置cookie时使用它。
$cookie = cookie(env('COOKIE_PREFIX', 'prod') . '_name', 'value', $minutes);然后,像这样检索它
$value = $request->cookie(env('COOKIE_PREFIX', 'prod') . '_name');https://stackoverflow.com/questions/45759986
复制相似问题