如何在 Magento 2 中获取和设置 cookie
Cookie 是网络工作方式的必要组成部分。网站使用 cookie 来跟踪用户并启用用户特定的功能。因此,在本文中,我们将向大家展示如何在 Magento 2 中从 cookie 中获取和设置数据。
创建类以管理 cookie
第一步是在 app/code/Magentest/Helper 中设置一个 ExampleCookie.php 类。ExampleCookie.php 包含以下内容:
<?php namespace Magenest\ManagerCookie\Helper; use Magento\Framework\Session\SessionManagerInterface; class ExampleCookie { protected $cookieManager; protected $cookieMetadataFactory; public function __construct( \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager, \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory ) { $this->cookieManager = $cookieManager; $this->cookieMetadataFactory = $cookieMetadataFactory; } /** * get cookie by name */ public function getCookie($cookieName) { return $this->cookieManager->getCookie($cookieName); } /** * set public cookie */ public function setPublicCookie($cookieName, $value) { $metadata = $this->cookieMetadataFactory ->createPublicCookieMetadata() ->setDuration(86400) // Cookie will expire after one day (86400 seconds) ->setSecure(true) //the cookie is only available under HTTPS ->setPath('/subfolder')// The cookie will be available to all pages and subdirectories within the /subfolder path ->setHttpOnly(false); // cookies can be accessed by JS $this->_cookieManager->setPublicCookie( $cookieName, $value, $metadata ); } /** * set sensitive cookie */ public function set Sensitive Cookie($cookieName, $value) { $metadata = $this->cookieMetadataFactory ->createSensitiveCookieMetadata() ->setPath('')// for global ->setDomain('.example.com');// cookie will be available for www.example.com, example.com and will not be available for anotherexample.com $this->_cookieManager->setSensitiveCookie( $cookieName, $value, $metadata ); } }
关于在 Magento 中设置 cookie,首先,你们需要记住,我们在 Magento 中有两种类型的 cookie。它们是公共和敏感 cookie:
- 公共 cookie可以通过 JS 访问。默认情况下,这些 cookie 的 HttpOnly 将设置为 false。
- 敏感的cookies不能被客户端的JS访问,它只能在你的服务器上访问。对于这些 cookie,HttpOnly 将始终设置为 true。
设置 cookie 时,您设置了原始 cookie 数据和一些元数据。此元数据包括cookie 的有效路径、cookie 过期时间的Duration等。
在 Javascript 中使用 cookie
在 javascript 中,您只需要包含jquery/jquery.cookie即可使用 cookie
<script type="text/javascript"> require([ 'jquery', 'jquery/jquery.cookie' ], function ($) { $(document).ready(function () { var simple_cookie = $.cookie('name_cookie'); // Get Cookie Value, note: You can only get a cookie if it is public if(!simple_cookie) { $.cookie('name_cookie', 'value of cookie', {expires: 86400}); // Set Cookie with metadata (note the cookies set here are public) }else { console.log(simple_cookie); } }); </script>
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。