首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >域和子域的Laravel共享cookie检测问题

域和子域的Laravel共享cookie检测问题
EN

Stack Overflow用户
提问于 2017-08-18 15:16:47
回答 4查看 4K关注 0票数 21

我在研究Laravel 5.4.30。

假设我们有一个域example.com和一个dev.example.com子域。主域为主分支,开发子域为开发分支。我们有cookie通知系统,它将在单击Hide Cookie Notice按钮后隐藏。这是通过设置一个永久的cookie来实现的。我们已经将SESSION_DOMAIN信任设置为每个环境的每个域。

对于主域:

代码语言:javascript
运行
复制
SESSION_DOMAIN=example.com

对于dev子域:

代码语言:javascript
运行
复制
SESSION_DOMAIN=dev.example.com

现在问题就在这里。如果我们转到example.com并单击隐藏cookie通知,将永久为主域设置cookie。在那之后,我们去dev.example.com并做同样的事情。因此,cookie也将被设置为子域。但是这个曲奇是在前一个之后设置的。(订单是重要的)现在,如果我们刷新子域,我们将再次看到通知!(而不是隐藏的)由于浏览器中cookie的.example.com参数设置了domain,浏览器读取了主cookie,因此每个子域都会受到影响。但是视图仍然显示通知,因为它不能读取任何用于隐藏的cookie。

无论如何,我不想在所有的子域上分享这个曲奇。我怎样才能做到这一点?我想我应该为曲奇名字加上一个前缀。但我不知道该怎么做,那只拉拉自动在曲奇名字上加上前缀。

有什么解决办法吗?

EN

Stack Overflow用户

发布于 2017-08-22 17:35:05

您可以根据环境设置cookie名称的前缀。

首先,将COOKIE_PREFIX添加到env文件中。

代码语言:javascript
运行
复制
COOKIE_PREFIX=dev

然后,在设置cookie时使用它。

代码语言:javascript
运行
复制
$cookie = cookie(env('COOKIE_PREFIX', 'prod') . '_name', 'value', $minutes);

然后,像这样检索它

代码语言:javascript
运行
复制
$value = $request->cookie(env('COOKIE_PREFIX', 'prod') . '_name');
票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45759986

复制
相关文章

相似问题

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