ANGULAR:POST请求返回null

时间:2019-04-04 14:54:31

标签: angular

当我添加一个新群组时,我想像邮递员一样回答,因为我需要添加对象id

enter image description here

这是我的服务职能

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);      
    });

enter image description here

3 个答案:

答案 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