Intereting Posts
Regex для двоеточия в теге xml при разборе парсинга с помощью php и simplexml_load_string wrap <b> -tag вокруг первого слова строки с preg_replace Динамические перезаписи в файле htaccess Отображение массива как древовидной структуры в php Преобразование текста в ссылку – проблема с регулярным выражением php невозможно проверить имя пользователя или нет. PHP – Загрузка изображения и отображение на странице Как диагностировать эту сегментацию PHP-Code-Coverage и поврежденные ошибки zend_mm_heap получить выбранное значение индекса тега <select> в php Как установить несколько версий XAMPP или несколько версий PHP на MAC OS X 10.7 Lion Необходимо установить propel_generator версии 1.3.5 Передача нескольких переменных в представление? Ошибка подключения 10060 при подключении к службе push push Как «вставить, если не существует» в MySQL? Удалить переменный продукт из корзины с помощью ajax в woocommerce

Являются ли созданные cookie недоступными до следующей загрузки страницы?

Когда я сначала создаю файл cookie, я, похоже, не могу захватить тот же файл cookie, пока не будет загружена следующая страница. Это похоже на то, что файл cookie не существует в браузере, пока страница не будет запрошена во второй раз.

Я использую фреймворк Kohana PHP:

Cookie::set('new_cookie', 'I am a cookie'); $cookie = Cookie::get('new_cookie'); //$cookie is NULL the first time this code is run. If I hit the page again and then call Cookie:get('new_cookie'), the cookie's value is read just fine. 

Итак, я убежден, что это нормальное поведение и что я, вероятно, не понимаю, как работают cookie. Может ли кто-нибудь прояснить это для меня?

Файлы cookie устанавливаются в заголовках HTTP, поэтому, когда сервер возвращает страницу. Когда вы перезагружаете страницу, ваш браузер отправит их обратно на сервер.

Таким образом, совершенно нормально, что они «видны» сразу после нового запроса.

Вот пример ответа с сервера:

 HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09-Jun-2021 10:18:14 GMT (content of page) 

Когда вы перезагружаете страницу, ваш браузер отправляет это сообщение:

 GET / HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2 Accept: */* 

Вот почему сервер может видеть их только после нового запроса браузером.

Вы считаете, что файлы cookie недоступны до загрузки следующей страницы. Файлы cookie хранятся в браузере и создаются после отправки документа клиенту. Когда клиент снова загружает (или перезагружает) любую из ваших страниц, любые существующие куки будут отправляться на сервер вместе с запросом страницы.

Да, файлы cookie могут быть доступны только при последующих загрузках страниц, потому что глобальное значение $ _COOKIE заполняется до того, как вы установите cookie.

EDIT: см. https://stackoverflow.com/a/7455234/996876

Клиент (браузер) видит новый файл cookie в ответе на какой-либо запрос. Затем он отправляет его во все последующие запросы на сервер. Так что да, это нормальное поведение.