Я создал простое веб-приложение API ASP.NET. Я включил CORS с помощью пакета Microsoft.AspNet.WebApi.Cors
.
Вот так выглядит мой контроллер:
public class UserController : ApiController
{
[Route("user/name")]
[HttpGet]
public HttpResponseMessage GetUserName()
{
dynamic data = new ExpandoObject();
data.user = HttpContext.Current.User.Identity.Name;
var response = JsonConvert.SerializeObject(data);
var msg = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(response)
};
return msg;
}
}
Я возвращаю только идентификатор пользователя из этого контроллера.
Я разместил приложение на IIS 8.5. Я отключил анонимную аутентификацию и включил аутентификацию Windows.
Если я использую клиент отдыха или получаю прямой доступ к конечной точке, вводя URL-адрес в браузере, я получаю имя пользователя. Если я использую REST-клиент, я получаю ответ
но если я сделаю вызов AJAX с помощью jquery, я получаю код состояния 401.
$.ajax({url: 'http://serverName:8899/user/name', method: 'GET' ,
success:function(res){
alert('hello');
}}) ;
Вышеупомянутый вызов работает в IE, только Chrome выдает ошибку 401
Как мне исправить эту ошибку. Я включаю проверку подлинности Windows с помощью IIS и вообще не менял свой web.config. Если это проблема аутентификации, почему я могу получать данные, когда использую клиент отдыха?