Я только что настроил прокси-страницу для обработки ajax-запросов, но не могу заставить ее работать, так как куки не сохраняются вообще. Мой код выглядит следующим образом:
public partial class JsonProxy : System.Web.UI.Page
{
private string username;
private string password;
private int idPlant;
private string mode;
protected void Page_Load(object sender, EventArgs e)
{
try
{
username = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["username"])) ? HttpUtility.UrlDecode(Request.Form["username"].ToString()) : string.Empty;
password = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["password"])) ? HttpUtility.UrlDecode(Request.Form["password"].ToString()) : string.Empty;
idPlant = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["idPlant"])) ? int.Parse(HttpUtility.UrlDecode(Request.Form["idPlant"].ToString())) : 0;
mode = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["mode"])) ? HttpUtility.UrlDecode(Request.Form["mode"].ToString()) : string.Empty;
string response = "";
HttpWebRequest wc;
if (!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password) && idPlant != 0 && !String.IsNullOrEmpty(mode))
{
//First do authentication
wc= (HttpWebRequest)WebRequest.Create("http://10.255.255.10/Base/Authentication/Login/" + username + "/" + password + ".aspx");
wc.Method = "GET";
StreamReader reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
if (reader.ReadToEnd().Contains("true"))
{
//Then check that authentication succeded
wc = (HttpWebRequest)WebRequest.Create("http://10.255.255.10/Base/Authentication/IsAuthenticated.aspx");
wc.Method = "GET";
reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
string str = reader.ReadToEnd();
if (str.Contains("true"))
{
//Then make BP request
string methodName = "/Base/BusinessPlan/GetBPAlll/" + idPlant + ".aspx";
wc = (HttpWebRequest)WebRequest.Create("http://10.255.255.10" + methodName);
wc.Method = "GET";
reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
response = reader.ReadToEnd();
}
}
}
//Last: write response
Response.ContentType = "application/json";
Response.Write(response);
}
catch (WebException ex)
{
Response.Write("error");
}
}
}
Запрос на вход в систему должен создать некоторые куки в клиенте, которые используются в следующем запросе (IsAuthenticated) и в последнем (на самом деле настоящий запрос).
Однако IsAuthenticated возвращает false только после того, как я правильно выполнил вход в систему (я вижу, что он возвращает true, как и ожидалось). Это как если бы я никогда не входил в систему.
Итак, вопрос: как я могу сохранить куки в прокси?
Я открыт для ответов, которые также учитывают HttpHandlers
или другие методы для выполнения ajax-прокси, не обязательно Aspx.
Примечание: если я делаю одну и ту же серию запросов, я вижу, как создаются файлы cookie, поэтому это должен быть вопрос моего прокси aspx