0

У меня есть два отдельных проекта: приложение с интерфейсом (угловое 2, с использованием кода Visual Studio) и приложение на задней панели (ядро ASP.NET с использованием Visual Studio 2015). Для приложения на задней панели, когда я сделал File> New Project, я выбрал «Аутентификация Windows».Выполнение вызова API из браузера работает, но не с помощью приложения front end

в свойствах, я эти коробки проверены:

enter image description here

Когда я делаю вызов этого API из моего браузера, он работает просто отлично:

enter image description here

 // GET: api/card 
     [HttpGet] 
     [Authorize(Roles = ActiveDirectory.User)] 
     public Card[] Get() 
     { 
      var cards = _cardData.GetAll().ToList(); 

      var result = cards 
          .OrderByDescending(x => x.LastChanged); 

      return result.ToArray(); 
     } 

Но когда я звоню от передний конец приложение, я получаю 401 ошибку:

enter image description here

private _cardUrl = 'http://localhost:8462/api/card'; 

    getCards(): Observable<Card[]> { 
     return this._http.get(this._cardUrl) 
      .map((response: Response) => <Card[]>response.json()) 
      .catch(this.handleError); 
    } 

Я должен отметить, что, когда я удаляю эту строку, она работает просто отлично: [Authorize(Roles = ActiveDirectory.User)]

Я определенно член этой роли, она просто не распознает ее, когда я делаю вызов из приложения переднего конца, как это происходит при выполнении вызова из моего браузера.

ответ

0

Ваши проекты развернуты в разных доменах? (http://localhost:8462 и http://localhost относятся к различным доменам)

Если да, вы должны добавить withCredentials: true в свой HTTP-сервер Angular2.

Смотрите также: angular2 xhrfields withcredentials true

+0

Да, задняя часть приложения на http: // localhost: 8462, а переднее приложение находится на http: // localhost: 3000. – Derek

+0

Затем вы должны добавить 'withCredentials', иначе браузеры не будут отправлять какие-либо учетные данные через XHR. –