У меня проблема с одним из моих запросов на сервер localhost.restsharp - no cookie в объекте ответа
Для проверки подлинности мне нужны два куки, один из метода sendReqForToken() и один из sendLoginReq (ввод строки, строка pass).
В ответ я получаю cookie от sendLoginReq, но не от sendReqForToken().
У меня нет идеи, почему у одного запроса есть куки-секунда, нет.
Интересно, что я получаю правильный токен (содержимое ответа корректно) из метода sendReqForToken(), но без cookie в заголовке ответа.
Это метод sendReqForToken() корпус:
public void sendReqForToken()
{
string adres = Globals.TOKEN_URL;
RestRequest request = new RestRequest(adres, Method.GET);
var client = new RestClient();
client.CookieContainer = new CookieContainer();
client.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
var tokenValue = JsonConvert.DeserializeObject<Token.RootObject>(response.Content);
DataManager.Instance.authToken = tokenValue.authenticity_token;
if (response.Cookies.Count > 0)
{
var cookie = response.Cookies.FirstOrDefault();
DataManager.Instance.cookieJar.Add(new Uri(Globals.TOKEN_URL), new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain));
}
}
else
{
}
});
}
response.Cookies.Count всегда равно 0. Response.Cookies свойство всегда равно нулю.
Это метод sendLoginReq тела:
public void sendLoginReq(string login, string pass)
{
login = "admin";
pass = "admin";
string adres = Globals.LOGIN_URL;
RestRequest request = new RestRequest(adres, Method.POST);
var client = new RestClient();
request.RequestFormat = DataFormat.Json;
try
{
request.AddBody(new
{
authenticity_token = DataManager.Instance.authToken,
commit = "Login",
utf8 = true,
user_session = new
{
email = login,
password = pass
}
});
}
catch
{
}
client.ExecuteAsync(request, (response) =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
if (response.StatusCode == HttpStatusCode.OK)
{
var cookie = response.Cookies.FirstOrDefault();
DataManager.Instance.cookieJar.Add(new Uri(Globals.LOGIN_URL), new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain));
}
}
else
{
}
});
}
Во втором методе я получаю правильное печенье.
Большое спасибо за любые идеи.
Спасибо, я установил этот вопрос пару дней назад. Я изменил параметр HTTPOnly на false на моем рубиновом сервере. Теперь все отлично работает! – user3163231
Итак, я добавил новый 'CookieContainer' в' RestClient', а затем после выполнения запроса '' CookieContainer 'RestClient' будет иметь файл cookie. Затем я использовал 'GetCookieHeader()' для получения фактического файла cookie –