У меня возникли проблемы с защитой моего веб-API с помощью промежуточного продукта owin.
Я установил ниже пакет
Install-Package Microsoft.Owin.Cors -Version 2.1.0
И ниже приведен код ConfigureAuth.cs.
public void ConfigureAuth(IAppBuilder app)
{
//...
app.UseOAuthBearerTokens(OAuthOptions);
///Install-Package Microsoft.Owin.Cors -Version 2.1.0
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
}
Я разместил этот проект WebApi по ссылке, например http://webaip.azurewebsites.net
Я пытаюсь получить доступ к методам контроллера выше API с другого сайта, скажем, http://mysite.azurewebsites.net С помощью вышеописанного кода я могу вызвать все методы API, которые не являются безопасными. (Не украшен атрибутом Authorize). Через javascript я не могу вызвать/токен для аутентификации. Ниже приведен код javascript.
function LogIn() {
var loginData = {
grant_type: 'password',
username: 'username',
password: 'password',
};
$.ajax({
type: 'POST',
url: 'http://webaip.azurewebsites.net/Token/',
data: loginData
}).done(function (data) {
alert('logged in');
alert(data);
}).fail(function (data) {
alert('login problem')
}).error(function (data) {
alert('error invoking API');
});
return false;
}
Я становлюсь ниже ошибки
XMLHttpRequest cannot load http://webaip.azurewebsites.net/Token/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mysite.azurewebsites.net' is therefore not allowed access. The response had HTTP status code 404.
Примечание. Я также попытался использовать код ниже. Это тоже не работает для меня.
public static void Register(HttpConfiguration config)
{
var json = config.Formatters.JsonFormatter;
config.Formatters.Remove(config.Formatters.XmlFormatter);
//Need to have Microsoft.AspNet.WebApi.Cors package installed.
config.EnableCors(new EnableCorsAttribute("*","*","*"));
}