{"id":1074,"date":"2025-06-12T12:06:49","date_gmt":"2025-06-12T04:06:49","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1074.html"},"modified":"2025-06-12T12:06:49","modified_gmt":"2025-06-12T04:06:49","slug":"symfony%e4%b8%ad%e7%9a%84cookie%e7%ae%a1%e7%90%86%ef%bc%9a%e5%ae%9e%e7%94%a8%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1074.html","title":{"rendered":"Symfony\u4e2d\u7684Cookie\u7ba1\u7406\uff1a\u5b9e\u7528\u6307\u5357"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#26631;&#39064;&#65306;Symfony Cookie&#31649;&#29702;&#65306;&#23454;&#29992;&#25351;&#21335;<\/p>\n<p>&#22312;&#29616;&#20195;Web&#24320;&#21457;&#20013;&#65292;Cookies&#26159;&#23384;&#20648;&#29992;&#25143;&#25968;&#25454;&#30340;&#24120;&#29992;&#26041;&#27861;&#12290;Symfony&#26694;&#26550;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;Cookie&#31649;&#29702;&#21151;&#33021;&#65292;&#21487;&#20197;&#24110;&#21161;&#24320;&#21457;&#32773;&#36731;&#26494;&#22320;&#21019;&#24314;&#12289;&#35835;&#21462;&#21644;&#21024;&#38500;Cookies&#12290;&#26412;&#25991;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992;Symfony&#26469;&#31649;&#29702;&#21644;&#25805;&#20316;Cookies&#12290;<\/p>\n<h3>1. &#21019;&#24314;Cookie<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Cookie&#23545;&#35937;&#65292;&#24182;&#35774;&#32622;&#20854;&#23646;&#24615;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyComponentHttpFoundationCookie;\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Cookie&#23545;&#35937;\n$cookie = new Cookie('username', 'JohnDoe');\n\n\/\/ &#35774;&#32622;Cookie&#30340;&#36807;&#26399;&#26102;&#38388;&#65288;&#20197;&#31186;&#20026;&#21333;&#20301;&#65289;\n$cookie-&gt;setMaxAge(3600); \/\/ 1&#23567;&#26102;&#21518;&#36807;&#26399;\n\n\/\/ &#28155;&#21152;Cookie&#21040;&#21709;&#24212;&#22836;\n$response = $this-&gt;getResponse();\n$response-&gt;headers-&gt;setCookie($cookie);<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026;<code>username<\/code>&#30340;Cookie&#65292;&#24182;&#23558;&#20854;&#20540;&#35774;&#32622;&#20026;<code>JohnDoe<\/code>&#12290;&#21516;&#26102;&#65292;&#25105;&#20204;&#35774;&#32622;&#20102;Cookie&#30340;&#26377;&#25928;&#26399;&#20026;1&#23567;&#26102;&#12290;<\/p>\n<h3>2. &#35835;&#21462;Cookie<\/h3>\n<p>&#35201;&#20174;&#35831;&#27714;&#20013;&#35835;&#21462;Cookie&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;<code>Request<\/code>&#23545;&#35937;&#25552;&#20379;&#30340;&#26041;&#27861;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyComponentHttpFoundationRequest;\n\n\/\/ &#33719;&#21462;&#24403;&#21069;&#35831;&#27714;&#23545;&#35937;\n$request = $this-&gt;getRequest();\n\n\/\/ &#35835;&#21462;&#21517;&#20026;'username'&#30340;Cookie\n$username = $request-&gt;cookies-&gt;get('username');<\/code><\/pre>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#22788;&#29702;&#22810;&#20010;Cookie&#65292;&#21487;&#20197;&#20351;&#29992;<code>all()<\/code>&#26041;&#27861;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#35835;&#21462;&#25152;&#26377;Cookie\n$cookies = $request-&gt;cookies-&gt;all();<\/code><\/pre>\n<h3>3. &#21024;&#38500;Cookie<\/h3>\n<p>&#35201;&#21024;&#38500;&#19968;&#20010;Cookie&#65292;&#21482;&#38656;&#23558;&#20854;&#36807;&#26399;&#26102;&#38388;&#35774;&#32622;&#20026;&#36807;&#21435;&#21363;&#21487;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyComponentHttpFoundationCookie;\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Cookie&#23545;&#35937;\n$cookie = new Cookie('username', '', -1);\n\n\/\/ &#28155;&#21152;Cookie&#21040;&#21709;&#24212;&#22836;\n$response = $this-&gt;getResponse();\n$response-&gt;headers-&gt;setCookie($cookie);<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#23558;Cookie&#30340;&#36807;&#26399;&#26102;&#38388;&#35774;&#32622;&#20026;&#36807;&#21435;&#65292;&#20174;&#32780;&#20351;&#20854;&#31435;&#21363;&#22833;&#25928;&#12290;<\/p>\n<h3>4. &#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312;Symfony&#24212;&#29992;&#20013;&#21019;&#24314;&#12289;&#35835;&#21462;&#21644;&#21024;&#38500;Cookie&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass CookieController extends AbstractController\n{\n    public function setCookie(Request $request, Response $response)\n    {\n        \/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Cookie&#23545;&#35937;\n        $cookie = new Cookie('username', 'JohnDoe');\n\n        \/\/ &#35774;&#32622;Cookie&#30340;&#36807;&#26399;&#26102;&#38388;&#65288;&#20197;&#31186;&#20026;&#21333;&#20301;&#65289;\n        $cookie-&gt;setMaxAge(3600); \/\/ 1&#23567;&#26102;&#21518;&#36807;&#26399;\n\n        \/\/ &#28155;&#21152;Cookie&#21040;&#21709;&#24212;&#22836;\n        $response-&gt;headers-&gt;setCookie($cookie);\n\n        return $this-&gt;json(['message' =&gt; 'Cookie created successfully']);\n    }\n\n    public function getCookie(Request $request, Response $response)\n    {\n        \/\/ &#35835;&#21462;&#21517;&#20026;'username'&#30340;Cookie\n        $username = $request-&gt;cookies-&gt;get('username');\n\n        if ($username) {\n            return $this-&gt;json(['message' =&gt; 'Username: ' . $username]);\n        } else {\n            return $this-&gt;json(['message' =&gt; 'No username found']);\n        }\n    }\n\n    public function deleteCookie(Request $request, Response $response)\n    {\n        \/\/ &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Cookie&#23545;&#35937;\n        $cookie = new Cookie('username', '', -1);\n\n        \/\/ &#28155;&#21152;Cookie&#21040;&#21709;&#24212;&#22836;\n        $response-&gt;headers-&gt;setCookie($cookie);\n\n        return $this-&gt;json(['message' =&gt; 'Cookie deleted successfully']);\n    }\n}<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#20123;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312;Symfony&#24212;&#29992;&#20013;&#36731;&#26494;&#22320;&#21019;&#24314;&#12289;&#35835;&#21462;&#21644;&#21024;&#38500;Cookies&#12290;&#24076;&#26395;&#36825;&#20010;&#25351;&#21335;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#27010;&#35272;<\/h2><p>&#21487;&#38752;&#22320;&#31649;&#29702;cookie&#23545;&#20110;&#20219;&#20309;&#22522;&#20110;Symfony&#30340;Web&#24212;&#29992;&#31243;&#24207;&#25552;&#20379;&#31283;&#23450;&#29992;&#25143;&#20307;&#39564;&#33267;&#20851;&#37325;&#35201;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;Symfony&#25552;&#20379;&#30340;&#24037;&#20316;&#26426;&#21046;&#65292;&#28145;&#20837;&#25506;&#35752;&#26368;&#20339;&#23454;&#36341;&#65292;&#24182;&#36890;&#36807;&#23454;&#38469;&#39033;&#30446;&#20013;&#30340;&#31034;&#20363;&#21521;&#24744;&#23637;&#31034;&#22914;&#20309;&#24212;&#29992;&#36825;&#20123;&#30693;&#35782;&#12290;<\/p><h3>&#29702;&#35299;Symfony&#20013;&#30340;Cookies<\/h3><p>&#22312;Symfony&#20013;&#65292;cookies&#23646;&#20110;HTTP&#22522;&#30784;&#32452;&#20214;&#30340;&#19968;&#37096;&#20998;&#12290;cookies&#20195;&#34920;&#26381;&#21153;&#22120;&#21521;&#29992;&#25143;&#27983;&#35272;&#22120;&#21457;&#36865;&#30340;&#25968;&#25454;&#65292;&#22312;&#21518;&#32493;&#35831;&#27714;&#20013;&#36820;&#22238;&#36825;&#20123;&#25968;&#25454;&#65292;&#20174;&#32780;&#20801;&#35768;&#26381;&#21153;&#22120;&#36328;&#19981;&#21516;&#35831;&#27714;&#35782;&#21035;&#29992;&#25143;&#12290;<\/p><h2>&#21019;&#24314;Cookie<\/h2><p><code>Cookie<\/code>&#23545;&#35937;&#22312;Symfony&#20013;&#29992;&#20110;&#21019;&#24314;&#20250;&#35805;&#12290;<code>set<\/code>&#26041;&#27861;&#30340;<code>Response<\/code>&#31867;&#36890;&#24120;&#29992;&#20110;&#22312;&#21709;&#24212;&#20043;&#21069;&#38468;&#21152;cookie&#65292;&#28982;&#21518;&#23558;&#20854;&#36820;&#22238;&#32473;&#29992;&#25143;&#30340;&#27983;&#35272;&#22120;&#12290;<\/p><pre><code>\/\/ src\/Controller\/SomeController.php\n\nuse SymfonyComponentHttpFoundationCookie;\nuse SymfonyComponentHttpFoundationResponse;\n\npublic function someAction() {\n    $response = new Response();\n\n    $cookie = new Cookie(\n        'my_cookie',    \/\/ The name of the cookie\n        'cookie_value', \/\/ The value of the cookie\n        time() + (2 * 365 * 24 * 60 * 60)  \/\/ The expiration time (2 years here)\n    );\n\n    $response-&gt;headers-&gt;setCookie($cookie);\n    return $response;\n}\n<\/code><\/pre><h2>&#38405;&#35835;&#39292;&#24178;<\/h2><p>&#20026;&#20102;&#35775;&#38382;&#23458;&#25143;&#31471;&#21457;&#36865;&#30340;cookie&#65292;&#20351;&#29992;&#12290;<code>$request-&gt;cookies<\/code>&#22312;&#25511;&#21046;&#22120;&#21160;&#20316;&#20013;&#30340;&#21442;&#25968;&#21253;&#65306;<\/p><pre><code>\/\/ Getting a specific cookie value by its name\n$value = $request-&gt;cookies-&gt;get('my_cookie', 'default_value');\n<\/code><\/pre><h2>&#26356;&#26032;&#21644;&#21024;&#38500;Cookies<\/h2><p>&#35201;&#21024;&#38500;&#19968;&#20010;cookie&#65292;&#20320;&#38656;&#35201;&#36890;&#36807;&#35774;&#32622;&#20854;&#36807;&#26399;&#26085;&#26399;&#20026;&#36807;&#21435;&#26469;&#26080;&#25928;&#21270;&#23427;&#12290;&#22312;&#26356;&#26032;&#26102;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;cookie&#65292;&#35813;cookie&#20855;&#26377;&#30456;&#21516;&#30340;&#21517;&#31216;&#20294;&#21253;&#21547;&#26356;&#26032;&#30340;&#20869;&#23481;&#25110;&#36807;&#26399;&#26085;&#26399;&#12290;<\/p><pre><code>\/\/ To delete a cookie\n$cookie = new Cookie('my_cookie', ' ', time() - 3600);\n$response-&gt;headers-&gt;setCookie($cookie);\n\n\/\/ To update a cookie\n$cookie = new Cookie('my_cookie', 'new_value', time() + 3600);\n$response-&gt;headers-&gt;setCookie($cookie);\n<\/code><\/pre><h2>&#19982;Cookie&#23646;&#24615;&#24037;&#20316;<\/h2><p>&#38500;&#20102;&#21517;&#31216;&#12289;&#20540;&#21644;&#36807;&#26399;&#26085;&#26399;&#20043;&#22806;&#65292;Symfony&#30340;&#20250;&#35805;cookie&#36824;&#21487;&#20197;&#21253;&#25324;&#20854;&#20182;&#23646;&#24615;&#65292;&#20363;&#22914;&#36335;&#24452;&#12289;&#22495;&#12289;&#23433;&#20840;&#26631;&#24535;&#31561;&#12290;<\/p><pre><code>$cookie = new Cookie(\n    'secure_cookie',  \/\/ name\n    'secure_value',  \/\/ value\n    time() + 3600,   \/\/ expire\n    '\/',             \/\/ path\n    null,            \/\/ domain\n    true,            \/\/ secure flag\n    true             \/\/ httponly flag\n);\n<\/code><\/pre><h2>JSON cookies &#26159;&#19968;&#31181;&#20351;&#29992; JSON &#26684;&#24335;&#23384;&#20648;&#21644;&#20256;&#36882;&#25968;&#25454;&#30340; Cookie&#65292;&#36890;&#24120;&#29992;&#20110;&#22312;&#23458;&#25143;&#31471;&#19982;&#26381;&#21153;&#22120;&#20043;&#38388;&#36827;&#34892;&#20132;&#20114;&#12290;<\/h2><p>&#22788;&#29702;JSON&#32534;&#30721;&#30340;&#25968;&#25454;&#21487;&#20197;&#36890;&#36807;Symfony&#30340;Cookie&#31867;&#26469;&#31649;&#29702;&#12290;&#28982;&#32780;&#65292;&#24517;&#39035;&#26684;&#22806;&#23567;&#24515;&#22320;&#27491;&#30830;&#32534;&#30721;&#21644;&#35299;&#30721;JSON&#25968;&#25454;&#12290;<\/p><pre><code>\/\/ Encode data\n$cookie = new Cookie('json_cookie', json_encode(['key' =&gt; 'value']));\n$response-&gt;headers-&gt;setCookie($cookie);\n\n\/\/ Decode data\n$jsonString = $request-&gt;cookies-&gt;get('json_cookie');\n$data = json_decode($jsonString, true);\n<\/code><\/pre><h2>&#22312;Symfony&#20013;&#27979;&#35797;Cookies&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#27493;&#39588;&#36827;&#34892;&#65306;\n\n&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#30340;&#39033;&#30446;&#24050;&#32463;&#23433;&#35013;&#20102;symfony\/http-client&#25193;&#23637;&#12290;\n\n&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#65292;&#20363;&#22914;AppControllerCookieController.php&#65292;&#24182;&#22312;&#20854;&#20013;&#28155;&#21152;&#19968;&#20010;&#22788;&#29702;GET&#35831;&#27714;&#30340;&#20989;&#25968;&#65292;&#35813;&#20989;&#25968;&#29992;&#20110;&#35774;&#32622;&#21644;&#35835;&#21462;Cookies&#12290;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass CookieController extends AbstractController\n{\n public function setAndGetCookieAction(Request $request): Response\n {\n \/\/ &#35774;&#32622;&#19968;&#20010;&#21517;&#20026;&#8217;example_cookie&#8217;&#30340;Cookies&#65292;&#20540;&#20026;&#8217;Hello World&#8217;\n $this-&gt;get(&#8216;session&#8217;)-&gt;set(&#8216;example_cookie&#8217;, &#8216;Hello World&#8217;);\n\n \/\/ &#20174;Cookies&#20013;&#33719;&#21462;&#20540;&#24182;&#36820;&#22238;&#21709;&#24212;\n return new Response($this-&gt;get(&#8216;session&#8217;)-&gt;get(&#8216;example_cookie&#8217;));\n }\n}\n\n&#22312;&#26381;&#21153;&#37197;&#32622;&#25991;&#20214;config\/services.yaml&#20013;&#27880;&#20876;&#36825;&#20010;&#25511;&#21046;&#22120;&#12290;\n\nservices:\n AppControllerCookieController:\n tags: [&#8216;controller.service_arguments&#8217;]\n\n&#20351;&#29992;Request::create()&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;HTTP&#35831;&#27714;&#23545;&#35937;&#65292;&#28982;&#21518;&#20351;&#29992;get()&#26041;&#27861;&#26469;&#33719;&#21462;&#25110;&#35774;&#32622;Cookies&#12290;\n\n&#26368;&#21518;&#65292;&#36890;&#36807;&#35843;&#29992;Response&#31867;&#30340;&#26041;&#27861;&#26469;&#29983;&#25104;&#21709;&#24212;&#12290;\n\n&#36825;&#26679;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312;Symfony&#24212;&#29992;&#20013;&#27979;&#35797;Cookies&#20102;&#12290;<\/h2><p>&#32534;&#20889;&#19982;cookie&#20132;&#20114;&#30340;&#27979;&#35797;&#23545;&#20110;&#32500;&#25252;Symfony&#24212;&#29992;&#33267;&#20851;&#37325;&#35201;&#12290;&#22312;&#20351;&#29992;PhpUnit&#36827;&#34892;&#21151;&#33021;&#27979;&#35797;&#26102;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#23458;&#25143;&#31471;&#26469;&#26816;&#26597;&#21709;&#24212;&#20013;&#30340;cookies&#65306;<\/p><pre><code>\/\/ ...\n\n$client = self::createClient();\n$crawler = $client-&gt;request('GET', '\/some-route');\n$cookies = $client-&gt;getResponse()-&gt;headers-&gt;getCookies();\n\n\/\/ Assertions about cookies...\n<\/code><\/pre><h2>&#23433;&#20840;<\/h2><p>&#22312;Symfony&#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#23433;&#20840;&#32771;&#34385;&#37197;&#32622;&#20320;&#30340;cookies&#65292;&#20363;&#22914;&#65306;\n\nHTTPOnly&#65306;&#30830;&#20445;cookie&#21482;&#30001;&#23458;&#25143;&#31471;&#27983;&#35272;&#22120;&#35775;&#38382;&#65292;&#32780;&#19981;&#20801;&#35768;&#33050;&#26412;&#35775;&#38382;&#12290;\nSecure&#65306;&#21482;&#26377;&#22312;HTTPS&#36830;&#25509;&#19979;&#25165;&#24212;&#35774;&#32622;&#20026;&#23433;&#20840;&#30340;&#65288;secure&#65289;&#12290;\nSameSite&#65306;&#25351;&#23450;cookie&#26159;&#21542;&#19982;&#21516;&#19968;&#31449;&#28857;&#36827;&#34892;&#20132;&#20114;&#12290;\n\n&#36825;&#20123;&#36873;&#39033;&#21487;&#20197;&#24110;&#21161;&#20445;&#25252;&#29992;&#25143;&#30340;&#38544;&#31169;&#21644;&#25968;&#25454;&#23433;&#20840;&#12290;<code>Secure<\/code>and &#36824;&#26159;&#12290;<code>HttpOnly<\/code>&#26631;&#24535;&#12290;&#23545;&#20110;&#21253;&#21547;&#25935;&#24863;&#25968;&#25454;&#30340; cookie&#65292;&#36825;&#19968;&#28857;&#23588;&#20854;&#37325;&#35201;&#12290;&#36825;&#26159;&#22312; Symfony &#24212;&#29992;&#31243;&#24207;&#20013;&#37197;&#32622;&#27492;&#21151;&#33021;&#30340;&#19968;&#20010;&#31034;&#20363;&#12290;<\/p><h3>&#35774;&#32622;Symfony&#20013;&#30340;&#23433;&#20840;&#21644;HttpOnly&#26631;&#24535;&#30340;Cookies<\/h3><p>&#24744;&#21487;&#20197;&#20840;&#23616;&#37197;&#32622;Symfony&#24212;&#29992;&#31243;&#24207;&#30340;cookie&#23433;&#20840;&#35774;&#32622;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<code>config\/packages\/framework.yaml<\/code>&#65306;<\/p><pre><code>framework:\n    session:\n        cookie_secure: true\n        cookie_httponly: true\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#37197;&#32622;&#19979;&#65306;<\/p><p><code>cookie_httponly: true<\/code>&#20351;&#24471;cookie&#19981;&#21487;&#34987;JavaScript&#35775;&#38382;<code>Document.cookie<\/code>API&#24110;&#21161;&#20943;&#36731;&#35832;&#22914;&#36328;&#31449;&#33050;&#26412;(XSS)&#31561;&#25915;&#20987;&#12290;<\/p><p><code>cookie_secure: true<\/code>&#30830;&#20445;&#20351;&#29992;&#23433;&#20840;&#21327;&#35758;&#65288;&#22914; HTTPS&#65289;&#21457;&#36865; cookie&#12290;<\/p><p>&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#38656;&#35201;&#36890;&#36807;&#32534;&#31243;&#26041;&#24335;&#20026;&#29305;&#23450;&#30340;cookie&#35774;&#32622;&#36825;&#20123;&#26631;&#24535;&#65292;&#21017;&#21487;&#20197;&#22312;&#21019;&#24314;cookie&#23454;&#20363;&#26102;&#36827;&#34892;&#25805;&#20316;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationCookie;\n\n\/\/ ...\n\npublic function someMethod()\n{\n    \/\/ Create a cookie with Secure and HttpOnly flags\n    $cookie = new Cookie(\n        'cookie_name',       \/\/ Name of the cookie\n        'cookie_value',      \/\/ Value of the cookie\n        0,                   \/\/ Expiry (0 for session cookie)\n        '\/',                 \/\/ Path\n        null,                \/\/ Domain, null means current host\n        true,                \/\/ Secure flag\n        true,                \/\/ HttpOnly flag\n        false,               \/\/ Raw\n        'lax'                \/\/ SameSite attribute\n    );\n\n    \/\/ Add the cookie to the response\n    $response = new Response();\n    $response-&gt;headers-&gt;setCookie($cookie);\n\n    return $response;\n}\n<\/code><\/pre><p>&#22312;&#36825;&#19968;&#27573;&#20195;&#30721;&#29255;&#27573;&#20013;&#65306;<\/p><p>&#28982;&#21518;&#65292;&#39292;&#24178;&#65288;cookie&#65289;&#20250;&#34987;&#28155;&#21152;&#21040;&#21709;&#24212;&#22836;&#65288;response header&#65289;&#20013;&#65292;&#38543;&#21518;&#20250;&#36890;&#36807;&#23458;&#25143;&#31471;&#21457;&#36865;&#20986;&#21435;&#12290;<\/p><p>&#19968;&#20010;&#26032;&#30340;&#39292;&#24178;&#26159;&#30001;&#20004;&#20010;&#19981;&#21516;&#30340;&#25104;&#20998;&#21019;&#24314;&#30340;&#12290;<code>Secure<\/code>and &#26159;&ldquo;&#24182;&#19988;&rdquo;&#30340;&#24847;&#24605;&#12290;<code>HttpOnly<\/code>&#26071;&#24092;&#35774;&#32622;&#20026;<code>true<\/code>&#24050;&#32463;&#25910;&#21040;&#25351;&#20196;&#65292;&#31245;&#21518;&#24320;&#22987;&#32763;&#35793;&#12290;<\/p><h3>&#23433;&#20840;&#26368;&#20339;&#23454;&#36341;<\/h3><p>&#32771;&#34385;&#20351;&#29992;Symfony&#33258;&#24102;&#30340;CSRF&#20445;&#25252;&#26426;&#21046;&#26469;&#36827;&#19968;&#27493;&#22686;&#24378;&#34920;&#21333;&#30340;&#23433;&#20840;&#24615;&#12290;<\/p><p>&#23450;&#26399;&#23457;&#26597;&#24744;&#30340;&#24212;&#29992;cookie&#20351;&#29992;&#24773;&#20917;&#65292;&#30830;&#20445;&#35774;&#32622;&#36866;&#24403;&#30340;&#26631;&#24535;&#20197;&#36866;&#29992;&#20110;&#19981;&#21516;&#31867;&#22411;&#30340;cookie&#12290;<\/p><p>&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#22987;&#32456;&#20351;&#29992;HTTPS&#20197;&#30830;&#20445;&#23433;&#20840;&#24615;&#12290;<code>Secure<\/code>cookie&#30340;&#26631;&#24535;&#26159;&#26377;&#25928;&#30340;&#12290;<\/p><h2>&#32467;&#35770;<\/h2><p>&#26412;&#25351;&#21335;&#21521;&#24744;&#20171;&#32461;&#20102;&#22312;Symfony&#39033;&#30446;&#20013;&#31649;&#29702;cookie&#30340;&#26041;&#27861;&#12290;&#27491;&#22914;&#24744;&#25152;&#30475;&#21040;&#30340;&#65292;Symfony&#20026;&#22788;&#29702;cookie&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#24037;&#20855;&#38598;&#65292;&#36825;&#20123;&#21151;&#33021;&#23545;&#20110;&#29992;&#25143;&#36319;&#36394;&#12289;&#20250;&#35805;&#31649;&#29702;&#21644;&#26356;&#22810;&#26041;&#38754;&#37117;&#26159;&#33267;&#20851;&#37325;&#35201;&#30340;&#12290;&#26377;&#20102;&#36825;&#20010;&#22522;&#30784;&#20043;&#21518;&#65292;&#24744;&#24212;&#35813;&#20934;&#22791;&#22909;&#19982;&#24182;&#31649;&#29702;&#24744;&#30340;Symfony&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;cookie&#20102;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312;&#20351;&#29992;Symfony&#26694;&#26550;&#26102;&#65292;&#29702;&#35299;&#24182;&#26377;&#25928;&#22320;&#31649;&#29702;cookies&#26159;&#38750;&#24120;&#37325;&#35201;&#30340;&#12290;&#36825;&#20123;&#23567;&#22359;&#30340;&#25968;&#25454;&#23384;&#20648;&#22312;&#23458;&#25143;&#31471;&#21644;&#26381;&#21153;&#22120;&#20043;&#38388;&#65292;&#29992;&#20110;&#36319;&#36394;&#29992;&#25143;&#20250;&#35805;&#29366;&#24577;&#31561;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#20851;&#20110;&#22914;&#20309;&#27491;&#30830;&#20351;&#29992;cookie&#30340;&#24314;&#35758;&#65306;<\/p>\n<h3>1. &#29702;&#35299;Cookies<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#20102;&#35299;&#20160;&#20040;&#26159;cookie&#65292;&#23427;&#20204;&#26159;&#22914;&#20309;&#24037;&#20316;&#30340;&#12290;&#31616;&#21333;&#26469;&#35828;&#65292;cookie&#26159;&#19968;&#31181;&#25991;&#26412;&#25968;&#25454;&#65292;&#21487;&#20197;&#22312;&#27983;&#35272;&#22120;&#19982;&#26381;&#21153;&#22120;&#20043;&#38388;&#20132;&#25442;&#20449;&#24687;&#12290;&#24403;&#29992;&#25143;&#35775;&#38382;&#32593;&#31449;&#26102;&#65292;&#26381;&#21153;&#22120;&#21521;&#20182;&#20204;&#21457;&#36865;&#19968;&#20010;&#21517;&#20026;&ldquo;Set-Cookie&rdquo;&#30340;HTTP&#22836;&#65292;&#21578;&#35785;&#27983;&#35272;&#22120;&#23558;&#35774;&#32622;&#19968;&#20010;&#26032;cookie&#12290;<\/p>\n<h3>2. &#20351;&#29992;HttpFoundation&#24211;<\/h3>\n<p>&#22312;&#20351;&#29992;Symfony&#26102;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992;<code>HttpFoundation<\/code>&#21253;&#26469;&#22788;&#29702;cookie&#12290;&#36825;&#20801;&#35768;&#20320;&#22312;&#25511;&#21046;&#22120;&#26041;&#27861;&#20013;&#30452;&#25509;&#25805;&#20316;cookie&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;<code>User<\/code>&#30340;&#27169;&#22411;&#65292;&#23427;&#26377;&#23646;&#24615;<code>username<\/code>&#21644;<code>password<\/code>&#12290;&#25105;&#20204;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;cookie&#65292;&#24182;&#23558;&#20854;&#35774;&#32622;&#20026;&#24403;&#21069;&#29992;&#25143;&#30340;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentHttpFoundationSessionSessionInterface;\nuse SymfonyContractsHttpClientHttpClientInterface;\n\nclass UserController extends Controller\n{\n    public function login(Request $request, SessionInterface $session)\n    {\n        \/\/ &#33719;&#21462;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#20174;&#34920;&#21333;\n        $username = $request-&gt;input('username');\n        $password = $request-&gt;input('password');\n\n        \/\/ &#21019;&#24314;&#26032;&#30340;cookie\n        $cookie = new Cookie(\n            'username',\n            $username,\n            time() + (86400 * 30), \/\/ &#35774;&#32622;&#36807;&#26399;&#26102;&#38388;&#20026;&#19968;&#20010;&#26376;\n            '\/mywebsite.com'\n        );\n\n        \/\/ &#23558;cookie&#28155;&#21152;&#21040;&#21709;&#24212;&#20013;\n        return new Response('&lt;h1&gt;Hello, ' . $username . '&lt;\/h1&gt;', 200, [\n            'set-cookie' =&gt; [$cookie],\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026;<code>username<\/code>&#30340;cookie&#65292;&#20854;&#20540;&#20026;&#35831;&#27714;&#20013;&#30340;&#29992;&#25143;&#21517;&#65292;&#36807;&#26399;&#26102;&#38388;&#26159;1&#22825;&#65288;86400&#31186;&#65289;&#65292;&#24182;&#19988;&#20165;&#38480;&#20110;&#25105;&#20204;&#30340;&#32593;&#31449;&#22320;&#22336; <code>\/mywebsite.com<\/code>&#12290;<\/p>\n<h3>3. &#22788;&#29702;&#22810;&#20010;cookie<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#21516;&#26102;&#35774;&#32622;&#22810;&#20010;cookie&#65292;&#21487;&#20197;&#20351;&#29992;<code>add()<\/code>&#26041;&#27861;&#25110;&#32773;&#25968;&#32452;&#25512;&#23548;&#24335;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentHttpFoundationSessionSessionInterface;\nuse SymfonyContractsHttpClientHttpClientInterface;\n\nclass UserController extends Controller\n{\n    public function login(Request $request, SessionInterface $session)\n    {\n        \/\/ &#33719;&#21462;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#20174;&#34920;&#21333;\n        $username = $request-&gt;input('username');\n        $password = $request-&gt;input('password');\n\n        \/\/ &#21019;&#24314;&#26032;&#30340;cookie\n        $cookie = new Cookie(\n            'username',\n            $username,\n            time() + (86400 * 30) - 1, \/\/ &#35774;&#32622;&#36807;&#26399;&#26102;&#38388;&#20026;&#19968;&#20010;&#26376;\n            '\/mywebsite.com'\n        );\n        $cookie = new Cookie(\n            'password',\n            $password,\n            time() + (86400 * 7) - 1, \/\/ &#35774;&#32622;&#36807;&#26399;&#26102;&#38388;&#20026;&#19968;&#21608;\n            '\/mywebsite.com'\n        );\n\n        \/\/ &#23558;cookie&#28155;&#21152;&#21040;&#21709;&#24212;&#20013;\n        return new Response('&lt;h1&gt;Hello, ' . $username . '&lt;\/h1&gt;', 200, [\n            'set-cookie' =&gt; [\n                ['name' =&gt; 'username', 'value' =&gt; $username, 'max-age' =&gt; 86400 * 30],\n                ['name' =&gt; 'password', 'value' =&gt; $password, 'max-age' =&gt; 86400 * 7],\n            ],\n        ]);\n    }\n}<\/code><\/pre>\n<h3>4. &#22788;&#29702;POST&#35831;&#27714;<\/h3>\n<p>&#22914;&#26524;&#35201;&#22788;&#29702;POST&#35831;&#27714;&#65292;&#21482;&#38656;&#30830;&#20445;&#23558;cookie&#35774;&#32622;&#22312;&#35831;&#27714;&#23545;&#35937;&#19978;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentHttpFoundationSessionSessionInterface;\nuse SymfonyContractsHttpClientHttpClientInterface;\n\nclass UserController extends Controller\n{\n    public function login(Request $request, SessionInterface $session)\n    {\n        \/\/ &#33719;&#21462;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#20174;&#34920;&#21333;\n        $username = $request-&gt;input('username');\n        $password = $request-&gt;input('password');\n\n        \/\/ &#21019;&#24314;&#26032;&#30340;cookie\n        $cookie = new Cookie(\n            'username',\n            $username,\n            time() + (86400 * 30), \/\/ &#35774;&#32622;&#36807;&#26399;&#26102;&#38388;&#20026;&#19968;&#20010;&#26376;\n            '\/mywebsite.com'\n        );\n        $cookie = new Cookie(\n            'password',\n            $password,\n            time() + (86400 * 7), \/\/ &#35774;&#32622;&#36807;&#26399;&#26102;&#38388;&#20026;&#19968;&#21608;\n            '\/mywebsite.com'\n        );\n\n        \/\/ &#23558;cookie&#35774;&#32622;&#22312;&#35831;&#27714;&#23545;&#35937;&#19978;\n        $request-&gt;cookies-&gt;add($cookie);\n\n        \/\/ &#23558;cookie&#28155;&#21152;&#21040;&#21709;&#24212;&#20013;\n        return new Response('&lt;h1&gt;Hello, ' . $username . '&lt;\/h1&gt;', 200, [\n            'set-cookie' =&gt; [\n                ['name' =&gt; 'username', 'value' =&gt; $username, 'max-age' =&gt; 86400 * 30],\n                ['name' =&gt; 'password', 'value' =&gt; $password, 'max-age' =&gt; 86400 * 7],\n            ],\n        ]);\n    }\n}<\/code><\/pre>\n<h3>5. &#32467;&#35770;<\/h3>\n<p>&#22312;&#20351;&#29992;Symfony&#26102;&#65292;&#22949;&#21892;&#22320;&#31649;&#29702;&#21644;&#20351;&#29992;cookie&#23545;&#20110;&#26500;&#24314;&#23433;&#20840;&#19988;&#21151;&#33021;&#24378;&#22823;&#30340;&#24212;&#29992;&#31243;&#24207;&#33267;&#20851;&#37325;&#35201;&#12290;&#36981;&#24490;&#19978;&#36848;&#25351;&#21335;&#21487;&#20197;&#24110;&#21161;&#20320;&#26356;&#22909;&#22320;&#29702;&#35299;&#21644;&#24212;&#29992;cookie&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;Symfony Cookie&#31649;&#29702;&#65306;&#23454;&#29992;&#25351;&#21335; &#22312;&#29616;&#20195;Web&#24320;&#038;#..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1074","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1074"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1074"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1074"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}