Я работаю над приложением с угловым 2, которое выполняет служебные вызовы в службу ASP.NET Web API 2. В этой службе CORS была включена в WebApiConfig
как так:Угловой 2 Войти с использованием тома идентификации ASP.NET
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
...
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
...
}
}
Это работает отлично, и я не имел никаких проблем с CORS. Например, вызов /api/users
возвращает всех пользователей.
Теперь, однако, я пытаюсь использовать токен .NET Identity для функции входа в систему, которая дает мне проблемы, связанные с CORS. При вызове /token
выполнить вход в мой login.service.ts
:
loginUser(username: string, password: string) {
let serviceURL = 'http://myurl/token';
let body = 'username=' + username + '&password=' + password + '&grant_type=password';
let headers: Headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options: RequestOptions = new RequestOptions({
headers: headers
});
return this.http.post(serviceURL, body, options)
.map(res => this.extractData(res))
.catch(this.handleError);
}
Я получаю следующее сообщение об ошибке:
XMLHttpRequest cannot load http://myurl/token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 400.
Я нахожу это заблуждение по двум причинам:
- Как упоминалось выше, у меня нет проблем с CORS с любым вызовом
/api
- Когда я ввожу правильные учетные данные, вызов «успешно» (т.
Status Code 200
, но я получаю ошибку, указанную выше.
Я просмотрел множество статей с аналогичной реализацией, и я не могу найти, что не так с моей.