2015-09-20 19 views
1

我很努力讓AngularJS將HTTP Content-Type標頭設置爲application/json。我已經看到,它通常是這樣做的:AngularJS沒有設置'Content-Type':'application/json'

$http({ 
     method: 'POST', 
     url: 'http://myurl.com', 
     data: { 
      "key":"value" 
     }, 
     headers : { 
      'Content-Type' : 'application/json' 
     } 
    }) 

但是,這似乎並沒有這樣做。檢查Chrome的頭,我看不出有任何Content-Type頭:

Screenshot from Google Chrome

我已經能夠獲得請求的郵差工作,具有以下設置:

POST /run HTTP/1.1 
Host: myurl.com:80 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 5470283d-0f71-93a0-32ff-cc2fa4395eaa 

{ 
    "key" : "value" 
} 

有什麼想法嗎?我在這裏做錯了什麼?

回答

0

嘗試在服務器上修改CORS設置如下:

'Access-Control-Allow-Headers': 'Accept, Content-Type'

+0

我沒有訪問服務器的一個例子。我已經能夠得到在郵差工作的請求,而不是在Angular中。 – charlierproctor

-1

你真的需要爲JSON內容類型?

下面我給出了一個代碼片段,這是我如何在struts應用程序中發佈數據,也許它會解決您的問題。

Angularjs-Post

$scope.postData = function() { 

    var data = escape(angular.toJson($scope.items)); 

    console.log(data);   

    $http({ 
      method: 'POST', 
      url: '/StrutsWithAngular/shopingCart.do', 
      data: 'cartValues='+data, 
      headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     }).success(function(data, status, headers, config) { 
      $scope.items = data; 
     }).error(function(data, status, headers, config) { 
     // alert("Error :: "+data); 
     }); 
}; 
+0

這似乎也不起作用。據我的理解,'application/x-www-form-urlencoded'和'application/json'是不同的內容類型。 – charlierproctor

0

下面是阿爾法建立46

var queryParams = JSON.stringify(this.testProfile); 

    var queryHeaders = new Headers(); 
    queryHeaders.append('Content-Type', 'application/json'); 


    this.http.post('/api/DataReference/TestProfiles/UpdateTestProfile', queryParams, { headers: queryHeaders}) 
     .subscribe(res => { 
      alert('Object Updated'); 
     });