我是JavaScript的新手,并且一直在努力将Angular的AJAX请求发送到后端Node.js Express应用程序。我的TypeScript文件中的POST请求如下所示,带有JSON正文:
this.httpClient.post(url, createdOrUpdatedBlog, {headers: {'Content-Type': 'application/json; charset=utf-8'}})
.subscribe(res => {
this.router.navigate(['/admin/blogs/list']);
},
error => console.log(error));
在我的Node应用程序中,我有一些简单的中间件来处理CORS。
app.use((req,res,next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.header('Access-Control-Allow-Credentials', true);
if(req.method === 'OPTIONS') {
res.send(200);
} else {
next();
}
});
我可以看到OPTIONS请求并返回OK响应。我也可以看到POST,但它总是空的(没有标题或内容),我无法弄清楚原因。
这可能是我失踪的非常明显的事情。任何帮助将不胜感激。
答案 0 :(得分:0)
我看到你正在使用HttpClient,你能尝试以这种方式设置标题吗?
{ headers: new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8') }
至于您的有效负载,请检查您是否发送了空的有效负载。
(由于我的工作代理,我看不到图像,是在Chrome控制台还是在你的节点日志中?)
答案 1 :(得分:0)
事实证明这与CORS无关,而且是由于前端和后端之间的大小写差异......
非常感谢!