Angularjs ответ не прошел, хотя API вызывается и возвращает успех - PullRequest
0 голосов
/ 03 августа 2020

Итак, у меня есть этот API для получения имени пользователя из домена, API использует C#

    [HttpGet]
    [Route("api/authenticate")]
    public HttpResponseMessage getWinUser()
    {
        try
        {
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
            UserPrincipal user = UserPrincipal.Current;
            string displayName = user.DisplayName;

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new ObjectContent<string>(displayName, Configuration.Formatters[0]);
            return response;
        }
        catch (Exception e)
        {
            return Request.CreateResponse(HttpStatusCode.InternalServerError, e.Message);
        }
    }

И у меня есть метод для его вызова, используя AngularJS

function getUserData() {
       return $http({
          url: 'https://localhost:44363/api/authenticate',
          method: 'GET',
          //withCredentials: true,
          headers: {
            'Content-Type': 'application/json; charset=utf-8',
          }
       });
 }

Вот тут я запутался. Вызов метода для API возвращает то, что я ожидал. Вызов конечной точки из Postman также вернет то, что мне нужно. И вызов напрямую из ссылки на конечную точку также возвращается, как ожидалось. Однако, когда я вызываю функции из браузера Chrome, он возвращается как ERR: FAILED

, это скриншот из Chrome: введите описание изображения здесь

Что я делаю не так и что мне использовать?

1 Ответ

0 голосов
/ 04 августа 2020

Вместо

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
        response.Content = new ObjectContent<string>(displayName, Configuration.Formatters[0]);
        return response;
                                                                                     

Можете ли вы использовать ниже: -

return Request.CreateResponse(HttpStatusCode.OK,new { displayName= user.DisplayName });

вы можете затем проанализировать свойство response.displayname в обработчике успеха для дальнейшего использовать.

...