Рубрики
Без рубрики

Анализ строк файлов cookie в Java с помощью HttpCookie

На днях я решал очень сложную ошибку, связанную с несколькими залипшими сессионными файлами cookie и несколькими другими… Помеченный java.

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

Моей первой идеей было написать какое-нибудь регулярное выражение, которое проанализировало бы строку и дало бы мне желаемые значения. Я пошел с чем-то вроде этого:

(.*?)=(.*?)($|;|,(?! ))

Вот ссылка регулярные выражения .

Оказывается, это сложнее, чем простое регулярное выражение. Одна строка может содержать несколько файлов cookie, необязательные параметры и т.д… Затем возникает проблема с несколькими форматами того, как может выглядеть строка cookie. Мне нужно было бы написать много логики вокруг моего регулярного выражения.

Естественно, я немного ленив, поэтому начал изучать, что может предложить Java. Для этого должно быть существующее решение. Я нашел класс с именем HttpCookie .

Использование очень простое:

List cookies = HttpCookie.parse(cookie);

Он проанализирует все файлы cookie в строке в набор объектов, содержащих всю необходимую информацию.

 private final String name; // NAME= ... "$Name" style is reserved
 private String value; // value of NAME

 // Attributes encoded in the header's cookie fields.
 private String comment; // Comment=VALUE ... describes cookie's use
 private String commentURL; // CommentURL="http URL" ... describes cookie's use
 private boolean toDiscard; // Discard ... discard cookie unconditionally
 private String domain; // Domain=VALUE ... domain that sees cookie
 private long maxAge = MAX_AGE_UNSPECIFIED; // Max-Age=VALUE ... cookies auto-expire
 private String path; // Path=VALUE ... URLs that see the cookie
 private String portlist; // Port[="portlist"] ... the port cookie may be returned to
 private boolean secure; // Secure ... e.g. use SSL
 private boolean httpOnly; // HttpOnly ... i.e. not accessible to scripts
 private int version = 1; // Version=1 ... RFC 2965 style

Это сэкономило мне уйму времени.

Оригинал: “https://dev.to/pavel_polivka/parsing-cookie-strings-in-java-with-httpcookie-5gol”