我正在尝试使用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个月 .