Хранить куки, полученные в заголовках ответов для asmx webservice - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь аутентифицировать пользователя в API через заголовок токена до https://www.test.com

Я получаю ответ с ключом заголовка:

"Set-Cookie="csrftoken=hOmAjkdBzlaYtNLN4w0YivRjPfZT0xpfl1I3cA933YNE0mZfflRV7NwzdrEjFfni; expires=Thu, 09-Apr-2020 18:54:25 GMT; Max-Age=31449600; Path=/,sessionid=kvplyt7poch4n34hqjvasohzqhgrtv0u; expires=Thu, 25-Apr-2019 18:54:25 GMT; HttpOnly; Max-Age=1209600; Path=/"

Я пытаюсь создать новый файл cookie в браузере для сайта https://www.test.com с полученным содержимым (csrftoken, exires, domain и т. Д.).

Чтобы при открытии нового окна файл cookie уже существовал и пользователь проходил аутентификацию.

[WebMethod]
public string authenticateUser(string token) {
  //Create a request for the URL.
  var request = WebRequest.Create("https://www.test.com");
  var myHttpWebRequest = (HttpWebRequest)request;
  string response1 = "";
  myHttpWebRequest.ContentType = "text/html";
  myHttpWebRequest.Method = "GET";
  myHttpWebRequest.Headers.Add("token", token);
  try {
    using (WebResponse resp = myHttpWebRequest.GetResponse()) {
      if (resp == null)
        new Exception("Response is null");

      System.IO.Stream test2 = resp.GetResponseStream();
      StreamReader reader = new StreamReader(resp.GetResponseStream());
      string test1 = reader.ToString();
      response1 = reader.ReadToEnd();

      //Some parsing to retrieve the header value I want to set

      //Actual cookie generation
      HttpCookie csrftoken = new HttpCookie("csrftoken", "MzsasdsIb2DtR1h3Tzwje6Mgb0cdsdVjDCYZAsdsdRBmsds6ds7ubZgdsds4r6Jl99hysddssbSNG3");
      csrftoken.Expires = DateTime.Now.AddYears(1);
      csrftoken.Path = "/";
      csrftoken.Domain = ".test";
      HttpContext.Current.Response.Cookies.Add(csrftoken);
    }
  }
  catch (Exception ex) {
    return ex.Message;
  }
  return "OK";
 }

К сожалению, когда я завершаю все это, cookie сохраняется для localhost, а не URI целевого API.

В любом случае можно ли добиться этого с помощью простого веб-сервиса asmx.cs и / или ванильного сценария JavaScript для IE 11?

...