2016-05-18 8 views
0

Это мое первое сообщение на этом сайте, но я часто прихожу к нему. Я застрял в проекте, который я кодирую для удовольствия. Я полный новичок на Perl, так что легко на меня. Я успешно написал веб-сервер в Perl, он анализирует PHP и обрабатывает несколько соединений.Обработка файлов cookie на HTTP-сервере

До сих пор так хорошо, но я застреваю при отправке файлов cookie в браузер.

Я полагаю, что я не понимаю, как мой сервер должен анализировать документ-вывод (от чтения файла для отправки по HTTP) перед отправкой файлов cookie. Я искал дни и подошел пустой. Вероятно, я слишком усложняю это, но как я должен знать, какую ключевую ценность запрашивает документ для отправки?

Поиск только страниц страниц, анализирующих документы из Интернета, с использованием HTTP::Cookies, который не является тем, что я ищу. Что происходит на стороне сервера для анализа локального документа для «Set-Cookie:» перед отправкой заголовков?

Я попытался HTTP::Cookies->extract_cookies($my_local_file), но он отвечает обратно

«Не удается найти метод объекта„_header“с помощью пакета ...»

, который имеет смысл, поскольку файлы заголовков никогда не отправлялись, поскольку это произошло на стороне сервера.

+0

Re "* Что происходит на стороне сервера для анализа локального документа для« Set-Cookie: »перед отправкой заголовков? *« Что делает это значит? 'Set-Cookie' - это заголовок, который HTTP-сервер включает в себя ответы, а не что-то найденное в документах. – ikegami

+0

Соответствующая спецификация - [RFC 6265] (https://tools.ietf.org/html/rfc6265). [Cookie :: Baker] (http://search.cpan.org/perldoc?Cookie::Baker), похоже, генерирует (значение для) заголовков Set-Cookie. – ikegami

ответ

1

Вы не понимаете, как работают куки. Они указаны на сервере и сохраненного на клиенте, так что этот вопрос не имеет смысла

Я предполагаю, что я не понимаю, как мой сервер должен разобрать документ-вывод (от чтение файла для отправки через HTTP) перед отправкой файлов cookie.

Вероятно, я слишком усложняю это, но как я должен знать, какое ключевое значение запрашивает документ для отправки?

Что происходит на стороне сервера для анализа локального документа для «Set-Cookie:» перед отправкой заголовков?

Сервер не «отправить для печенья». Когда сервер получает HTTP-запрос от клиента, он создает и отправляет ответ, содержащий информацию, запрошенную клиентом. Этот ответ может включать в себя Set-Cookie заголовков, чтобы инструктировать клиент, чтобы сохранить некоторую информацию

Документа не может «запрос на передачу» ключевых ценностей-это просто документ!- и нет «Разбор локального документа». Сервер просто добавляет заголовки, которые определяют данные, которые он хочет вернуть, если клиент отправляет другой запрос одному и тому же хосту.

Если требования просты, каждый элемент данных может отображаться в заголовках. Например

Set-Cookie: localtime=2016-05-18T09:01:16 
Set-Cookie: username=Keith 

Но если сервер хочет хранить много информации, относящуюся к сессии (содержимое корзины, возможно), то это может быть просто идентификатор сеанса, который соответствует идентификатору в MySQL запись базы данных проводится на сервере, который содержит все необходимые данные

Set-Cookie: session_id=76151387 

Этот метод также повышает безопасность, так как только идентификатор сеанса появляются в HTTP-сообщений, и все реальные данные хранятся вне сайта на сервере

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

Cookie: localtime=2016-05-18T09:01:16; username=Keith 

или

Cookie: session_id=76151387 

Есть вариации на эту основную мысль; например, сервер может указать поле Expires или Max-Age, в котором указывается, когда куки-файл должен быть удален клиентом. Предположим, что сервер посылает

Set-Cookie: session_id=76151387; Max-Age=86400 

то куки будут сохранены на диске, так что он является постоянным перезапуске браузера, и удаляется через один день (возраст указывается в секундах). Без любого из этих атрибутов cookie является файлом session cookie, который обычно хранится в памяти и будет удален при закрытии браузера.

Существуют другие, более эзотерические атрибуты, которые может указывать сервер. RFC 6265 - это окончательная спецификация системы cookie HTTP, которая подробно описывает каждый аспект

+0

Спасибо ... Это действительно помогло. Я узнал от вас, что мне не нужно анализировать файлы cookie до отправки документа. Мне нужно было установить заголовок Content Type для типа сценария, который был вызван. Как только я это сделал, это сработало. –

+0

@KeithKirkland: Я не знаю, откуда у вас возникла мысль, что вы должны * разбирать * что-то, чтобы получить значения «Set-Cookie». Их содержимое зависит от того, для чего вы хотите использовать cookie, но, вероятно, это не должно быть связано с содержимым отправляемого документа. Заголовок заголовка 'Content-Type' должен отражать тип данных, которые вы * отправляете *, который может быть * типом сценария, который был вызван *, хотя я не уверен, что вы подразумеваете под этим, но не обязательно будет. – Borodin

0

Когда браузер отправляет запрос на веб-сервер, заголовок может содержать строку cookie. Это веб-браузер, представляющий его файлы cookie для веб-сервера, а также веб-запрос. Запрос может выглядеть следующим образом:

GET /index.html HTTP/1.1 
Host: YourURL.com 
Cookie: key=value; key=value; key=value 

Если вы разбираете необработанный запрос на сервер, анализировать значения из печенья линии.

HTTP::Server::Simple - это бесплатная библиотека CPAN, которая предоставляет полностью функционирующий веб-сервер, если вы не хотите изобретать колесо.

+0

Они спрашивали о «отправке файлов cookie в браузер». – ikegami

 Смежные вопросы

  • Нет связанных вопросов^_^