На днях я решал очень сложную ошибку, связанную с некоторыми липкими сессионными файлами cookie и несколькими обратными прокси-серверами. В процессе устранения ошибок я обнаружил, что мне нужно проанализировать строки заголовка set-cookie и выполнить некоторую фильтрацию значений в одном из наших обратных прокси-серверов.
Моей первой идеей было написать какое-нибудь регулярное выражение, которое проанализировало бы строку и дало бы мне желаемые значения. Я пошел с чем-то вроде этого:
(.*?)=(.*?)($|;|,(?! ))
Вот ссылка регулярные выражения .
Оказывается, это сложнее, чем простое регулярное выражение. Одна строка может содержать несколько файлов cookie, необязательные параметры и т.д… Затем возникает проблема с несколькими форматами того, как может выглядеть строка cookie. Мне нужно было бы написать много логики вокруг моего регулярного выражения.
Естественно, я немного ленив, поэтому начал изучать, что может предложить Java. Для этого должно быть существующее решение. Я нашел класс с именем HttpCookie
.
Использование очень простое:
Listcookies = 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”