【发布时间】:2019-04-27 15:55:53
【问题描述】:
我开发了一个带有 express 后端的 angular 7 应用程序。 Express 在localhost:3000 上运行,Angular 客户端在 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” 不见了
Angular 应用流程如下 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 ));
}
有人可以帮我解决这个错误吗?我有 a) CORS b) 从 server.js 提供静态文件作为
app.use(express.static(__dirname + '/dist/sfdc-event'));
c) 动态环境变量。 我还缺少什么?
【问题讨论】:
-
响应的 HTTP 状态码是什么?
-
@Arup Sarkar,如果适用,请标记正确答案
标签: node.js angular express cors angular7