我正在尝试设置Cookie,但Cookie未保存。以下是我的尝试:
$cookies = Yii::$app->response->cookies;
$cookies->add(new \yii\web\Cookie([
'name' => 'abc',
'value' => 'xyz',
'expire' => time() + 86400 * 365,
]));
$cookies1 = Yii::$app->request->cookies;
if ($cookies1->has('abc'))
$cookieValue = $cookies1->getValue('abc');
echo 'value : '.$cookieValue;
echo '<pre>'; print_r($_COOKIE);
$ cookieValue不包含任何值。 Cookie未生成。我做错了什么?
答案 0 :(得分:2)
你的代码很好。您的问题是,您尝试设置然后在同一请求中获取Cookie 。
您的浏览器尚未收到回复,因此在您尝试阅读之前,它还没有机会添加Cookie。
您只需要在单独的请求中设置然后获取cookie:
public function actionSetCookie() {
$cookies = Yii::$app->response->cookies;
$cookies->add(new \yii\web\Cookie([
'name' => 'abc',
'value' => 'xyz',
'expire' => time() + 86400 * 365,
]));
echo 'Cookie set!';
}
public function actionGetCookie() {
$cookies1 = Yii::$app->request->cookies;
if ($cookies1->has('abc'))
$cookieValue = $cookies1->getValue('abc');
echo 'value : '.$cookieValue;
}
答案 1 :(得分:0)
Set your cookie like this
$cookie = Yii::$app->response->cookies;
$cookie = new \yii\web\Cookie
([
'name' => 'abc',
'value' => 'xyz',
'expire' => time() + 86400 * 365,
]);
Yii::$app->getResponse()->getCookies()->add($cookie);
//check cookie is exist or not
if(Yii::$app->getRequest()->getCookies()->has('abc'))
{
// if exist then get cookie value
$username = Yii::$app->getRequest()->getCookies()->getValue('abc');
}
答案 2 :(得分:0)
请输入我的答案,因为有几次访问了此问题,但找不到解决方案。我花了一整天来解决它。因此,希望这个答案对您有所帮助。
在我的情况下,我使用了axios
程序包,该程序包从前端发送了请求,并且在标头中得到了响应Set-Cookie
,但没有保存在浏览器中。因此设置axios.defaults.withCredentials = true;
解决了我的问题。