【发布时间】:2019-04-26 17:31:06
【问题描述】:
我无法向在同一主机上运行的 api 发出 POST 请求,但在角度前端的另一个端口上运行 代码如下:
import { Component, OnInit } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';
@Component({
selector: 'app-addbook',
templateUrl: './addbook.component.html',
styleUrls: ['./addbook.component.scss']
})
export class AddbookComponent implements OnInit {
addForm: FormGroup;
constructor(private formBuilder: FormBuilder, private http:HttpClient) {
}
ngOnInit() {
this.addForm=this.formBuilder.group({
title: ['', Validators.required],
description:['', Validators.required],
genre: ['', Validators.required],
author: ['', Validators.required],
publisher: ['', Validators.required],
pages: ['', Validators.required],
image_url: ['', Validators.required],
buy_url: ['', Validators.required]
});
}
onSubmit(){
if(this.addForm.valid){
console.log(this.addForm.value);
const data = this.addForm.value;
const headers=new HttpHeaders({'Content-Type':'application/json'});
this.http.post("http://localhost:3000/api/books",headers,data).subscribe(
res=>{
console.log(res);
},
err=>{
console.log('err:'+err);
}
);
}
}
}
结果: 输出控制台:
输出网络:
如果您在第二张图片中看到标题已更改为 OPTIONS 而不是帖子
http://localhost:3000/api/books - 发布 api 和 http://localhost:4200 - 前端角度
我错过了什么??
【问题讨论】:
-
有效载荷
data和headers的顺序在您的情况下被翻转。查看我的答案以了解更多信息。 -
您是否阅读了控制台中的消息?您需要阅读 CORS 并相应地更新您的后端(或添加代理,以更接近您的实际部署配置为准)。
-
您似乎必须在您的 Express 服务器上启用 CORS。我添加了一个更新的答案。请检查是否有帮助。
-
@jonrsharpe,我会记住这一点。谢谢:)
标签: javascript node.js angular http mean-stack