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

And*_*alu 1 javascript rest angular

我正在后端通过 REST api 构建一个小的 Angular 前端支持,但我遇到了一个非常奇怪的问题:执行 http.post(url, data, params) 结果什么也没有发生(没有任何迹象表明请求曾经命中webserver,在 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);
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 在服务器上启用了 CORS
  • URL 上的 this.http.get 按预期工作
  • 服务器日志中没有证据表明请求曾被发送
  • Chrome 开发人员工具中没有证据表明请求已发送(没有此类发布请求)
  • 在 .post() 调用之前在方法中记录内容显示一切都如预期(标题、数据等)
  • 在 Postman 作品中复制请求(相同的标头和数据)
  • 也尝试对数据进行字符串化
  • 错误处理程序做了一些简单的日志记录,但它没有被触发

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

将不胜感激任何指针。

谢谢!

Pan*_*kar 5

本质上,您只创建了一个可观察对象,而可观察对象本质上是惰性的。只有当有人订阅他们时,他们才会收到呼叫/发出。因此,您必须调用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)
    );
}
Run Code Online (Sandbox Code Playgroud)