Аутентификация веб-запроса путем добавления ошибки "Куки выдает"
На моем веб-сайте я использую проверку подлинности с помощью форм. И для этого я хочу сделать веб-запрос. Я пользуюсь cookieContainer. Мой код
string url = HttpContext.Current.Request.Url.AbsoluteUri;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
Cookie authenticationCookie = new Cookie(
FormsAuthentication.FormsCookieName,
cookie.Value,
cookie.Path,
HttpContext.Current.Request.Url.Authority);
req.CookieContainer = new CookieContainer();
req.CookieContainer.Add(authenticationCookie);
WebResponse res = req.GetResponse();
но этот код выдает ошибку "Недопустимая часть файла cookie" Domain "=" localhost:300 "." Таким образом, я обнаружил, что ошибка происходит из этой строки кода
Cookie authenticationCookie = new Cookie(
FormsAuthentication.FormsCookieName,
cookie.Value,
cookie.Path,
HttpContext.Current.Request.Url.Authority);
URL сайта - localhost:300. Я не могу найти никакого решения для этого. Кто-нибудь может сказать мне, что пошло не так?
1 ответ
Решение
Попробуйте исключить номер порта из свойства домена, которое вы передаете конструктору Cookie:
Cookie authenticationCookie = new Cookie(
FormsAuthentication.FormsCookieName,
cookie.Value,
cookie.Path,
HttpContext.Current.Request.Url.Host
);
или установите cookie как заголовок HTTP напрямую, без использования контейнера cookie:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
req.Headers[HttpRequestHeader.Cookie] = string.Format("{0}={1}", cookie.Name, cookie.Value);
WebResponse res = req.GetResponse();