Я создаю приложение Ionic, которое должно взаимодействовать с приложением ASP net MVC (мне нужно получить данные JSON).
Когда я отправляю запрос в приложение ASP из приложения Ionic, меня не разрешают, потому что я не вошел в систему. Я получаю это:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access. The response had HTTP status code 401.
Моя проблема в том, что я хочу войти в свой API, но не знаю, как продолжить работу с Ionic. В аналогичном приложении я использовал клиент C# и объекты HttpWebRequest & NetworkCredential.
Я сделал запрос POST, чтобы попытаться войти в API, но получил ошибку 401. Вот код, но отправленные мной учетные данные не позволяют мне пройти аутентификацию в веб-службе.
connect(){
var credentials = "name = " + mylogin + "&password = " + mypassword;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post(URLServeur, credentials, {headers: headers}).subscribe(data => {
if (data.json().success){
console.info("yes");
resolve(true);
}
else
{
console.info("no");
resolve(false);
}
});
}
Спасибо,





Я наконец обнаружил, что это проблема в Angular с параметрами запроса. Если вы вставляете слишком много параметров запроса, withCredentials: true игнорируется.
Код в приложении Ionic:
var headers = new Headers();
headers.append('Content-Type', 'application/json');
var url = "http://localhost"
var data = "This is my data";
this.http.post(url, JSON.stringify(data), {withCredentials: true}).subscribe(data => {
if (data){
console.info("yes");
}
else
{
console.info("no");
}
});
Также не забудьте добавить это в файл webConfig на сервере:
<httpProtocol>
<customHeaders>
<clear />
<add name = "Access-Control-Allow-Origin" value = "http://localhost:8100" />
<add name = "Access-Control-Allow-Headers" value = "content-Type,authorization" />
<add name = "Access-Control-Allow-Methods" value = "GET,PUT,POST,DELETE,OPTIONS" />
<add name = "Access-Control-Allow-Credentials" value = "true" />
</customHeaders>
</httpProtocol>
Я надеюсь это поможет другим людям
Чтобы было ясно, с Angular нет проблем. Вам нужно посмотреть, как HTTP-запросы работают в Angular, и у вас не будет этой проблемы.
Я уточняю, что даже когда я пытаюсь получить доступ к своему API из браузера, он запрашивает аутентификацию (логин и пароль). Это проверка подлинности Windows. Я хотел бы иметь возможность войти в систему из приложения Ionic с помощью почтового запроса.