繁体   English   中英

在Angular 4中无法通过HTTP发送POST请求

[英]Unable to send POST request via HTTP in Angular 4

我正在通过后端的REST api构建小的Angular前端支持,但是我遇到了一个非常奇怪的问题:执行http.post(url,data,params)不会导致任何事情发生(没有迹象表明该请求曾经击中过网络服务器,在Chrome开发者工具中,绝对没有记录任何与此this.http.get()请求相对的请求,该请求对于同一台服务器上的URL正常工作)。

export class RestComponent {

    constructor ( private http: Http ) {}
    sendStuff() {
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });

        this.http.post('http://localhost:3021/api/data', {'data': 3}, options)
            .catch(this.handleError);
    }
}
  • 在服务器上启用了CORS
  • URL上的this.http.get可以正常工作
  • 服务器日志中没有证据表明曾经发送过请求
  • Chrome开发人员工具中没有证据表明请求已发送(没有此类发布请求)
  • 在.post()调用之前在方法中记录内容表明所有内容均符合预期(标头,数据等)
  • 在Postman作品中复制请求(相同的标题和数据)
  • 也尝试过字符串化数据
  • 错误处理程序执行一些简单的日志记录,但未触发

我觉得自己很愚蠢,因为它一定是很明显的东西,但它却使我无所适从。 我创建了一个简单的组件,它只有两种方法,一种通过post发送硬编码的数据,另一种通过get获取硬编码的json,第二种有效,但第一种无效。

将不胜感激任何指针。

谢谢!

本质上,您创建的只是一个可观察的对象,而可观察的对象本质上是惰性的。 仅当有人订阅它们时,它们才会被呼叫/发送。 因此,您必须调用从其返回的subscribe Observable才能使代码正常工作。 除此之外,一切似乎都很完美。

sendStuff() {
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    return this.http.post('http://localhost:3021/api/data', {'data': 3}, options)
      .catch(this.handleError)
      .subscribe(
       (data) => console.log(data)
    );
}

没有服务器代码供我们查看,但请确保将路由设置为期望内容类型application/json因为默认情况下,发布路由将期望发布数据,具体取决于您使用的服务器技术。

也可以尝试只做一个相对路径: .post('/api/data')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM