Что такое элемент заголовка HTTP? - PullRequest
3 голосов
/ 30 сентября 2011

Согласно этой документации Apache"Некоторые заголовки HTTP (например, заголовок set-cookie) имеют значения, которые можно разложить на несколько элементов".Я не могу понять это.Например, когда я использую метод getElements () для объекта заголовка «Set-Cookie» со значением:

SESSIONID=abcdefg01234; Path=/; Expires=Wed, 09 Jun 2021 10:18:14 GMT

, я получаю массив из двух HeaderElement s, один элемент заголовкаэто:

SESSIONID=abcdefg01234; Path=/; Expires=Wed

, а другой:

09 Jun 2021 10:18:14 GMT

Насколько это полезно?На этих HeaderElement s я могу вызывать такие методы, как getName(), getValue(), getParameterByName(), но каковы будут значения или параметры 09 июня 2021 10:18:14 GMT ???Кроме того, почему действительный параметр заголовка Expires = ср, 09 июня 2021 10:18:14 GMT разделен на две части?Это кажется неправильным.Тем не менее, когда я вызываю header.getElements () для заголовка:

Set-Cookie: SESSIONID=abcdefg01234; Path=/; Expires=Wed, 09 Jun 2021 10:18:14 GMT

Он разделяется на два элемента заголовка, так как они должны быть разделены запятыми ... Тем не менее, я не могу найти какой-либолучшее объяснение концепции элемента заголовка, чем упомянутое здесь .Что же это за элементы заголовка?Кто-нибудь может объяснить, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

То, что вы получаете, - это заголовок «Cookie», который является одним из заголовков, отправляемых серверами для ранее установленных файлов cookie. Формат значения этого заголовка: "cokkie1name = cookie1valie; cookie2name = cookie2value;" и так далее для каждого из ранее установленных файлов cookie. Фактическим значением заголовка «Cookie» является вся эта сцепленная цепочка имен / значений файлов cookie, разделенных знаком «;». Как только вы восстановите указанное значение указанного заголовка, вы можете разделить его на ";" чтобы получить имя / значение каждого куки. Теперь, как говорится, очевидно, когда анализ значений заголовка в библиотеке Apache HttpCliont делает известную ошибку, и она ошибочно разделяется на "," вместо ";" Как говорят ребята из Apache в этой ветке форума, для них это нормальное поведение, если вы хотите, чтобы другой создал свой собственный парсер:

https://issues.apache.org/jira/browse/HTTPCLIENT-810

1 голос
/ 01 октября 2011

С чем вы сталкиваетесь - это проблема с Set-Cookie; он использует разделитель "," неправильно.

Лучшим примером будет «Разрешить» или «Принять».

См. http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-16.html#rfc.section.3.2.p.7 для получения дополнительной информации.

...