我在設置一個網頁的Cookie/JS/site.js:Yii2:如何讀取cookie,它是由JavaScript
$.cookie("sidebar", "hidden", { path: '/' });
我閱讀用PHP的cookie:
$sidebar_toggle_state = $_COOKIE['sidebar'];
是否也可以使用Yii請求組件來讀取這些cookie?下面的代碼不會讀取cookie:
$sidebar_toggle_state = Yii::$app->request()->cookies()->getValue('sidebar', '');
參見:http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html#cookies
當我設置通過Yii的響應組件一個新的Cookie:
Yii::$app->response->cookies->add(new yii\web\Cookie([
'name' => 'sidebar',
'value' => 'hidden',
]));
然後餅乾看起來價值像這樣(因爲cookie被保護):
3976220a3c8e46bb641aef1da3accfb1652bffd5bb9de503a9d6882e8a69f6f9a%3A2%3A%7Bi%3A0%3Bs%3A7%3A%22sidebar%22%3Bi%3A1%3Bs%3A6%3A%22hidden%22%3B%7D
這樣的cooki e可以讀取Yii請求組件。但它可以讀取不受保護的Cookie嗎?
或者,是否可以使用JavasSript/jQuery(不使用AJAX)設置Yii保護的cookie?
有一個JavaScript API,可以讀取由Yii2保護的Cookie:https://github.com/Requilence/yii2-js-cookie但API無法設置cookie,因爲「您無法設置受保護的cookie在JS中由於簽名算法的實現將在客戶端不安全「。 –
已嘗試此i \ Yii :: $ app-> getRequest() - > getCookies() - > has('cookie_name');檢查 –
@NuriddinRashidov是的,我試過了:if(Yii :: $ app-> getRequest() - > getCookies() - > has('sidebar')){...(在幾個變體中)。而且我也嘗試通過var_dump(Yii :: $ app-> request-> cookies)查看所有cookie;但沒有積極的結果。 –