У меня проблема с моим мобильным приложением ioni c. Когда я строю свой проект в браузере, мои запросы правильно отправляют все заголовки, и аутентификация работает. Но если я на своем android устройстве, у меня нет никаких заголовков, и у меня есть «Предварительные заголовки показаны» на моем chrome отладчике.
отладчик chrome
Я использую HttpClient angular. У кого-нибудь есть идеи? Заранее спасибо ! :)
My ioni c info: ioni c info
EDIT 1: Мой подлинный запрос выглядит следующим образом: https://URL/url-login-api?login='+username+'&password='+password
Вот мой http сервис для метода GET:
public get(pageName, action, params2): Promise<any> {
let headers = new HttpHeaders();
let httpParams = new HttpParams();
for (const item in params2) {
httpParams = httpParams.append(item, params2[item]);
}
return this.http.request(
'GET',
this.host + HTTP_CONFIG[pageName][action].URL,
{
headers: headers,
params: httpParams,
withCredentials: !HTTP_CONFIG[pageName] [action].PARAMS.withCredentials ? false : true
}
).toPromise().then((resp) => {
console.log("Response: ", resp)
return (resp);
});
}
А вот как я вызываю мою http-службу для аутентификации:
this.httpServices.get("AUTH", "LOGIN", {login , password}).then((resp) => {
const res = resp;
this.events.publish("logged_in");
const cookie = JSON.parse(res);
let token;
const ln = cookie.length;
for (let i = 0; i < ln ; i++) {
if (cookie[i].Key === ".DOTNETNUKE") {
token = cookie[i].Value;
}
}
}
Вот метод бэкэнд-аутентификации, который они мне дали (у меня пока нет к нему доступа). Точно такой же метод работает в режиме браузера (с отправленным заголовком Set-Cook ie et c ...):
if (loginStatus != UserLoginStatus.LOGIN_USERNOTAPPROVED &&
loginStatus != UserLoginStatus.LOGIN_FAILURE)
{
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AppendHeader("content-type", "application/javascript");
var coll = new List<KeyValuePair<string, string>>();
foreach (string cookie in HttpContext.Current.Request.Cookies)
{
var httpCookie = HttpContext.Current.Request.Cookies[cookie];
if (httpCookie != null)
coll.Add(new KeyValuePair<string, string>(cookie,
string.Join(",", httpCookie.Value)));
}
return Json.Serialize(coll);
}