当我添加一个新群组时,我想像邮递员一样回答,因为我需要添加对象id
这是我的服务职能
addGroupe(groupe: Groupe): Observable<Groupe> {
return this.http
.post<Groupe>(`${this.url}/groupe`, groupe)
.pipe(catchError(this.handleError('addGroupe', groupe)))
}
这是检索答案的函数,但它始终返回null
this.groupeService.addGroupe(groupe).subscribe((resp: Groupe) => {
console.log("response", resp);
});
答案 0 :(得分:3)
更改:
addGroupe(groupe: Groupe): Observable<Groupe> {
return this.http
.post<Groupe>(`${this.url}/groupe`, groupe)
.pipe(catchError(this.handleError('addGroupe', groupe)))
}
收件人:
let options = {
headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
};
addGroupe(groupe: Groupe): Observable<Groupe> {
return this.http
.post<Groupe>(`${this.url}/groupe`, groupe, options)
.pipe(catchError(this.handleError('addGroupe', groupe)))
}
其他: 为了确保所有浏览器都支持它,我建议使用polyfill
import 'url-search-params-polyfill';
npm i url-search-params-polyfill --save
更明确:
发生CORS错误的原因有多种,但总是与安全风险有关,服务器有权确定客户端具有的访问权限,浏览器会遵循response headers
中的指示,例如:
'Access-Control-Allow-Credentials' : true,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'GET',
'Access-Control-Allow-Headers':'application/json'
如我先前建议的那样,您是否更有可能提出问题(application/x-www-form-urlencoded
)。但是,如果无法使用,您可以在终端中运行curl -I http://ip:port
(如果使用Windows,则可以在cmd中运行,但如果需要,则需要安装cmd)以查看服务器Access-Control-Allow-Origin
是否允许您的客户端。通过指定IP:PORT或*
(表示全部允许)。如果不允许,则可以更改服务器中的响应标头(如果可以访问)或使用CORS proxy
(如果服务器位于WAN上而不只是本地说明),或使用浏览器插件忽略服务器指令,但我不建议这样做,因为其他用户也可以使用它。
答案 1 :(得分:1)
您收到cors原点错误,表示您在localhost:4200
上使用了角度应用程序,在localhost:8000
上使用了api
如果您使用dotnet core作为后端,则可以设置cors设置
dotnet core
或者您可以使用Google商店中的cors https://chrome.google.com/webstore/search/Access-Control-Allow-Origin
答案 2 :(得分:0)
一个可能的原因是返回http发布请求的null,是无效的响应代码,例如205:重置内容, 服务器必须返回有效的http响应代码(200:OK) 查看此链接以捕获HTTP响应代码 Angular : Handling HTTP Response