【问题标题】:AngularJS doesn't set 'Content-Type' : 'application/json'AngularJS 没有设置“Content-Type”:“application/json”
【发布时间】:2015-09-20 04:36:33
【问题描述】:

我正在努力让 AngularJS 将 HTTP Content-Type 标头设置为 application/json。我已经看到它经常这样做:

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

但这似乎并没有做到这一点。检查 Chrome 中的标头,我没有看到任何 Content-Type 标头:

我已经能够通过以下设置获得在 POSTMAN 中工作的请求:

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"
}

有什么想法吗?我在这里做错了什么?

【问题讨论】:

    标签: json angularjs http-headers


    【解决方案1】:

    尝试如下修改服务器上的 CORS 设置:

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

    【讨论】:

    • 我无权访问服务器。我已经能够得到在 Postman 中工作的请求,而不是在 Angular 中。
    【解决方案2】:

    这是 alpha build 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');
            });
    

    【讨论】:

      【解决方案3】:

      您真的需要为 JSON 设置内容类型吗?

      下面我给出了一个代码sn-p,这是我在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);
             });
      };
      

      【讨论】:

      • 这似乎也不起作用。据我了解,“application/x-www-form-urlencoded”和“application/json”是不同的内容类型。
      猜你喜欢
      • 2018-03-11
      • 2016-10-02
      • 1970-01-01
      • 2018-01-26
      • 2023-04-07
      • 2013-04-07
      • 1970-01-01
      • 2012-05-22
      • 2022-01-01
      相关资源
      最近更新 更多