0

我希望大家都做得很好。我最近開始使用angular 4.4,我一直在試圖將數據發佈到我的api服務器,但不幸的是它不工作。我花了2天時間,但仍然沒有成功。並已從angular.io甚至已經嘗試過6-7條。 我試過HttpHttpclient模塊 但似乎沒有工作。Angular 4 Http POST不工作

的問題是,每當我試圖將數據發佈到我的服務器,角使得HTTP OPTIONS類型的請求,而不是POST

this.http.post('http://myapiserver.com', {email: '[email protected]'}).subscribe(
    res => { 
     const response = res.text(); 
    } 
); 

,我也一直在努力,發送自定義選項與要求,但仍然沒有成功。

const headers = new Headers({ 'Content-Type': 'x-www-form-urlencoded' }); 
const options = new RequestOptions({ headers: headers }); 
options.method = RequestMethod.Post; 
options.body = {name: 'Adam Smith'}; 
//options.body = JSON.stringify({name: 'Adam Smith'}); // i also tried this 
//options.body = 'param1=something&param2=somethingelse'; // i also tried this 

我正在使用ASP.NET 2.0的核心,但由於它不工作,我也試過簡單的PHP代碼,這裏是PHP的服務器端代碼。而且它也不起作用。

<?php 
print_r($_POST); 
?> 

注意:Cors也在服務器上啓用。另外我還嘗試了簡單的獲取請求,它的工作非常好。

我真的很感謝一些幫助。

在此先感謝

+0

選項是一個飛行前檢查請求,如果一切正常,它會使POST後。你確定CORS配置是正確的嗎?你看到了什麼輸出,你可以用[mcve]擴展*「不工作」*嗎? – jonrsharpe

+0

你是否從OPTIONS迴應中得到任何奇怪的迴應/標題? –

+0

這裏是請求角發送 https://pasteboard.co/GOBkz3Z.png 和響應是空Array()(因爲我在服務器端(PHP)使用print_r($ _ POST)。 –

回答

0

你試圖傳遞標頭,在後menthod的第三個參數:

this.http.post('http://myapiserver.com', JSON.stringify({name: 'Adam Smith'}), { headers: new Headers({ 'Content-Type': 'application/json' }) }).subscribe(
    res => { 
     const response = res.text(); 
    } 
); 

確保你從@角導入頁眉/ HTTP

+0

是的,我已經嘗試過了,它不工作,併爲雙重檢查我只是再試一次但它完全不起作用,它在OPTIONS http請求類型中提交ajax請求 –

+0

它完美地擊中了服務器,但是使用了錯誤的http方法** OPTIONS **當它應該是** POST ** 檢查截圖角正在發送,如果我運行你的上述代碼 https://pasteboard.co/GOBkz3Z.png –

+0

檢查這個答案,可能會有所幫助![l墨水](https://stackoverflow.com/a/21783145/7764151) – JayDeeEss

0

萬一,如果有人也面臨同樣的問題,我解決了它通過設置內容類型爲應用程序/ x-www-form-urlencoded

const headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    const options = new RequestOptions({ headers: headers }); 
    const params = new URLSearchParams(); 
    params.append('mypostField', 'myFieldValue'); 
    htp.post('myapiendpoint.com', params, options).subscribe();