Я разработал угловое 7 приложение с экспресс-бэкендом.Экспресс работает на localhost:3000
, а угловой клиент работает на localhost: 4200.
В server.js
у меня есть (не весь код)
const app = express();
// Enable CORS
app.use(cors());
// Get our API routes
const api = require('./api');
// Set our api routes
app.use('/api', api);
app.use(express.static(__dirname + '/dist/sfdc-event'));
В файле api.js, У меня есть router.get ('/ oauth2 / login'), который перенаправляет на https://example.com, который отправляет токен доступа и аутентифицирует пользователя (аутентификация OAuth2).
Когда я вызываю URL http://localhost:3000/api/oauth2/login все работает нормально, но когда я пытаюсь сделать то же самое из angular component.ts -> service.ts, я получаю следующую ошибку.
Блокировка перекрестного запроса: Та же политика происхождения запрещает чтение удаленного ресурса. Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»
Угловой поток приложения следующим образом login.component.ts, в котором есть кнопка, вызывающая службуapi.service.ts, который выполняет http get.
login.component.ts
sfdcLogin(): void {
console.log('DEBUG: LoginComponent: ', 'Login button clicked..');
this.apiService.login().subscribe( data => { console.log( data ); });
}
api.service.ts
login() {
console.log('DEBUG: APiService login(): ', 'login() function.');
const URL = 'oauth2/login';
console.log('DEBUG: ApiService login URL : ', `${environment.baseUrl}/${URL}`.toString());
return this.http.get(`${environment.baseUrl}/${URL}`)
.pipe( map( res => res ));
}
Может кто-нибудь помочь мне обойти ошибку?У меня есть а) CORS б) обслуживание статических файлов из server.js как
app.use(express.static(__dirname + '/dist/sfdc-event'));
в) переменная динамического окружения.Что еще мне не хватает?