Using AngularJS $ http with asp.net webservice, is there a way to set request headers?

I just ran into a fancy problem regarding getting data through the asp.net web service.

when using the jQuery ajax method, headers are set correctly and data is successfully extracted to JSON.

JSON example:

$.ajax({
    type: "GET",
    url: "service/TestService.asmx/GetTestData",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: callback,
    error: function (err, xhr, res) {
      alert(err);
    }
  });

Request headers for the above:

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type    application/json; charset=utf-8
Host    localhost
Referer http://localhost/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
X-Requested-With    XMLHttpRequest

Answer headers for the above:

Cache-Control   private, max-age=0
Content-Length  327
Content-Type    application/json; charset=utf-8
Date    Tue, 29 Oct 2013 17:59:56 GMT
Server  Microsoft-IIS/7.5
X-AspNet-Version    4.0.30319
X-Powered-By    ASP.NET

it works great.

But for the AngularJS $ http method, the Content-Type value of the request header is not set, so the Content-Type value of the response header is equal by default text/xml; charset=utf-8. See an example below:

$http({
    method : 'GET',
    url: 'service/TestService.asmx/GetTestData',
    headers: {
      'Accept': 'application/json, text/javascript, */*; q=0.01',
      'Content-Type': 'application/json; charset=utf-8'
    }
  }).success(callback);

The request headers above look like this: you will see that Content-Type is missing:

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Host    localhost
Referer http://localhost/ComponentsAndRepos/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0

therefore, the response headers for the above are as follows:

Cache-Control   private, max-age=0
Content-Encoding    gzip
Content-Length  341
Content-Type    text/xml; charset=utf-8
Date    Tue, 29 Oct 2013 17:59:56 GMT
Server  Microsoft-IIS/7.5
Vary    Accept-Encoding
X-AspNet-Version    4.0.30319
X-Powered-By    ASP.NET

XML JSON, ?

,

data:{} $http.

    $http({
    method : 'GET',
    url: 'service/TestService.asmx/GetTestData',
    data: {},
    headers: {
      'Accept': 'application/json, text/javascript, */*; q=0.01',
      'Content-Type': 'application/json; charset=utf-8'
    }
  }).success(callback);
+4
1

:

, , , , . . : Angular,

+2

All Articles