簡體   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