InternetSetCookieEx InternetGetCookieEx Cookie никогда / никогда не истекает

/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

Это соответствует:

 - (+351) 282 43 50 50
 - 90191919908
 - 555-8909
 - 001 6867684
 - 001 6867684x1
 - 1 (234) 567-8901
 - 1-234-567-8901 x1234
 - 1-234-567-8901 ext1234
 - 1-234 567.89/01 ext.1234
 - 1(234)5678901x1234
 - (123)8575973
 - (0055)(123)8575973

В $ n он сохраняет:

  1. Индикатор страны
  2. Номер телефона
  3. Расширение

Вы можете проверить его на https://www.regexpal.com/?fam=99127

0
задан Lenor 25 March 2019 в 14:19
поделиться

1 ответ

Что ж, я наконец-то нашел решение

, выполнив следующее:

HttpWebResponse HttpWebResponse = (HttpWebResponse)HttpWebRequest.GetResponse();

и прочитав HttpWebResponse.Headers, где оно выглядит как:

Set-Cookie: expiration=for+5+seconds; expires=Mon, 25-Mar-2019 13:47:30 GMT; path=/

я заметил что файлы cookie, хранящиеся в HttpWebResponse.Cookies, имеют Cookie.Expires на основе Machine DateTime Mon, 25-Mar-2019 14:47:30 GMT (как вы могли бы получить с DateTime.Now), а не на UTC DateTime (например: DateTime.UtcNow)

как я строил свое строковое значение cookie для InternetSetCookieEx на основе HttpWebResponse.Cookies. Затем я получил + 1 час (потому что я во Франции) с истекающим DateTime, который, по сути, должен быть UTC DateTime.

Решением было преобразовать его в UTC следующим образом:

Values += "; expires=" + Cookie.Expires.ToUniversalTime().ToString("R");

Моя последняя мысль: в Windows 10 должно быть какое-то исправление, которого нет в Windows 7 для InternetSetCookieEx , Он автоматически корректирует время истечения до UTC, если строка, содержащая GTM DateTime, неверна. (это, вероятно, не точно, но у вас есть идея)

0
ответ дан Lenor 25 March 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: