You need to enable JavaScript to run this app. 为什么Symfony设置的Cookie无法跨请求保留及如何在Nginx中校验
优惠活动
大模型
产品
解决方案
定价
更多

为什么Symfony设置的Cookie无法跨请求保留及如何在Nginx中校验

Symfony 全局Cookie设置与Nginx Cookie校验实现

需求

在Symfony框架中实现用户登录后下发指定值的Cookie,要求该Cookie在站点所有请求中都生效,同时在Nginx层校验该Cookie存在且值正确,校验通过才允许访问对应静态资源。

初始问题

初期已完成Cookie创建下发逻辑,但Cookie仅在单次请求中有效,后续新请求不会携带该Cookie。
最初的Cookie设置代码如下:

$response = new Response();
$time = time() + (3600 * 24 * 7);
$response->headers->setCookie(new Cookie("nametest", "test", $time, "/"));
$response->sendHeaders();

问题修复

将Cookie的path参数设置为/后,Cookie即可在站点全路径的所有请求中正常携带。

Nginx校验配置

最终Nginx侧的校验规则如下,针对/assets/users/images/路径下的资源,校验nametestCookie值是否匹配,不匹配则跳转登录页:

location /assets/users/images/ {
    if ($cookie_nametest !~* "test") {
       return 301 https://example_domain.com/login;
    }
}

内容的提问来源于stack exchange,提问作者Kevin Gravell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:45:04