Проблема Angular2 CORS

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

XMLHttpRequest cannot load https://hr/Team/EditEmployeeInfo.aspx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:54396' is therefore not allowed access. The response had HTTP status code 401.

Это мой сервис angular2, и я пробовал что-то вроде этого

getUserHrtbProfile(userId): Promise<any> {            
        const headers = new Headers();
        headers.append('Access-Control-Allow-Headers', 'Content-Type');
        headers.append('Access-Control-Allow-Methods', 'GET, PUT, POST, DELET');
        headers.append('Access-Control-Allow-Origin', '*');

        var apiUri: string = "https://hrtb/Team/EditEmployeeInfo.aspx?emplid={0}&Menu=InfoEmployee&T=0".replace("{0}", userId);
        return this.http.get(apiUri, headers).map(result => result.json()).toPromise();
}

и это мой компонент

this.bannerService.getUserHrtbProfile(this.userId).then(hrtbJson => {
    this.hasHrtbAccess = hrtbJson.HasHrtbAccess;
    this.hrtbProfileUrl = hrtbJson.HrtbProfileUrl;
}).catch(err => {
    this.hasHrtbAccess = false;
});

Я искал решение своей проблемы, но так и не смог найти решение, которое соответствует моим потребностям.

HTTP-запрос Angular 2 с Access-Control-Allow -Происхождение установлено на *

Но самое главное, это проблема angular2, которую мне нужно решить? Или на самом деле, как я читал, этим должна была заниматься команда, предоставляющая доступ к API?
Всем спасибо.


person Remus    schedule 23.09.2016    source источник


Ответы (2)


Вы пытаетесь сделать запрос на другом домене, это то, что вы не можете решить здесь. попробуйте сделать запрос на ваш резервный код, это решит вашу проблему.

person Bharat    schedule 23.09.2016
comment
да, я знаю, это работает, но не так, как должно, это означает, что я понятия не имею, как другая команда сделала это, но содержание не в порядке. Представьте себе иерархию, в которой некоторые пользователи могут просматривать профили других пользователей, если я не могу, я должен получить 200, потому что даже если я не авторизован, запрос выполнен успешно, но содержимое должно быть другим, ну в моем случае это не проблема я получить 200 и всегда один и тот же контент, независимо от того, есть ли у меня доступ к некоторым профилям или нет. - person Remus; 23.09.2016

Вам необходимо включить CORS на вашем бэкэнде API. Только в целях тестирования вы можете использовать это расширение Chrome для имитации CORS на вашем бэкэнде API:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

person Elio Salvatore    schedule 23.09.2016