我正在尝试使用heroku中的Angular 4向外部http / api发布帖子请求(API是使用express构建的 . 后端和前端是单独构建并部署在heroku中) .

在我的快速服务器中,添加了CORS来发出http请求,

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", '*');
    res.header("Access-Control-Allow-Credentials", true);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header("Access-Control-Allow-Headers", 'Origin,X-Requested-With,Content- 
    Type,Accept,content-type,application/json,X-XSRF-TOKEN');
    next();
});

HTTP get在Angular中正常工作,但由于CSRF令牌始终无效,我似乎无法使HTTP发布 .

另一方面,在我的Angular APP中,我添加了一个自定义标头来设置csrf标记

// data from form
let email    = e.target.elements[0].value;
let password = e.target.elements[1].value;
let csurf    = e.target.elements[2].value;

let data = {
    email     : email,
    password  : password
};

let headers = new Headers();
headers.append("Content-Type", 'application/x-www-form-urlencoded');
headers.append('Accept', 'application/json');
headers.append('X-XSRF-TOKEN', csurf);

let options = new RequestOptions({headers: headers});

this.req = this.myLoginService.postLogin(JSON.stringify(data), options).subscribe((data) => {
    console.log(data, headers);
}, (err) => console.warn(err));

我在myLoginService中的postLogin函数代码是

postLogin(body, option){
    return this.http
    .post(`${endpoint}`, body, option)
    .map(res => res.json())
    .catch(this.handleError)
}

我的app.module(BrowserModule,HttpModule,ModuleWithProviders,NgModule)中已经添加了必要的模块 .

先感谢您 . 我迷失在我正在做的事情上,我不知道该怎么做才能做到这一点 . 我只使用4角4个月 .