我正在尝试向设置身份验证Cookie的API控制器发送POST请求。我需要检索那个cookie,但我不确定如何。我有什么:
从服务发送:
public static Cookie Authenticate(string username, string url) {
using (var client = new WebClient()) {
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
var data = "="+username;
var test = client.UploadString(url, "POST", data);
// get cookie here, converted from HttpCookie
return new Cookie();
}
}
在API控制器上接收:
[Route("api/auth")]
[System.Web.Http.AcceptVerbs("POST")]
public HttpCookie SetCookie([FromBody] string username) {
FormsAuthentication.SetAuthCookie(username, true);
return FormsAuthentication.GetAuthCookie(decrypted, true);
}
目前,这会返回我认为是cookie的字符串表示形式,这对我没什么好处。如何从WebClient捕获HttpCookie?
答案 0 :(得分:1)
WebClient
是一种高级抽象,不会将Cookie暴露给消费者。
您有两种选择:
您可以从WebClient派生自己的类,覆盖GetWebResponse
方法并在那时读取cookie
或者您可以直接使用HttpWebRequest
等较低级别的课程。