服务器设置的 cookie 第一次未在 javascript 中显示
cookies set by server doesn't get shown in javascript first time
我真的不知道交易是什么。我在 php:
中设置了我的 cookie
$locale = 'en_US';
setcookie('locale', $locale);
我在 Javascript 中访问它:
console.log(document.cookie);
奇怪的是这没有显示 cookie。但是,如果我打开浏览器控制台并键入 document.cookie
,它会显示所有 cookie。
如果我刷新页面,就会显示 cookie。
出于某种原因,cookie 在设置时不会发送到浏览器。
Cookie 是否存储在响应的末尾?如果是的话,如何才能让它们存储在开头?
以下代码在 Chrome 中对我有用,显然是在同一个请求中
$locale = 'unique_number_to_differntiate_from_yours';
setcookie('different_cookie_name', $locale);
echo "<script> console.log(document.cookie); </script>";
exit ;
正如 Davin H 所指出的,您需要确保在调用 setcookie 之前没有输出,甚至 space 也没有。原因是cookie是用headers设置的,一旦开始输出就不能再设置headers了
我真的不知道交易是什么。我在 php:
中设置了我的 cookie$locale = 'en_US';
setcookie('locale', $locale);
我在 Javascript 中访问它:
console.log(document.cookie);
奇怪的是这没有显示 cookie。但是,如果我打开浏览器控制台并键入 document.cookie
,它会显示所有 cookie。
如果我刷新页面,就会显示 cookie。
出于某种原因,cookie 在设置时不会发送到浏览器。
Cookie 是否存储在响应的末尾?如果是的话,如何才能让它们存储在开头?
以下代码在 Chrome 中对我有用,显然是在同一个请求中
$locale = 'unique_number_to_differntiate_from_yours';
setcookie('different_cookie_name', $locale);
echo "<script> console.log(document.cookie); </script>";
exit ;
正如 Davin H 所指出的,您需要确保在调用 setcookie 之前没有输出,甚至 space 也没有。原因是cookie是用headers设置的,一旦开始输出就不能再设置headers了