pedrommuller
pedrommuller

Reputation: 16066

AngularJS $resource not sending X-Requested-With

I'm using angular 1.1.5 and I'm using a $resource to make a XHR to a REST service but it seems like the the $resource isn't appending the header as X-Requested-With as XMLHttpRequest, is that a normal behavior? and Do I need to append the header manually?

function loginCtrl($scope,$resource) {
    $scope.submit = function () {
         var resource = $resource('/Api/User/login', {},
              {
                  authenticate: {
                      method: 'POST',
                      isArray: false,
                      headers: {
                          '__RequestVerificationToken':  $scope.loginRequest.Token

                      }
                  }
              });
         resource.authenticate($scope.loginRequest);
    };
}

Upvotes: 47

Views: 25651

Answers (3)

Mustafa Dwaikat
Mustafa Dwaikat

Reputation: 3692

I had the same issue and I solved it using:

myApp.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);

Also you can set the header to accept application/json:

$http({
  method: 'GET',
  url: '/someUrl',
  headers: { Accept: 'application/json' }
})

Upvotes: 2

Johnny
Johnny

Reputation: 1116

Just add this to your app

myAppModule.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);

Upvotes: 109

Breandán
Breandán

Reputation: 1883

It used to but was changed. (see here)

"X-Requested-With header is rarely used in practice and by using it all the time we are triggering preflight checks for crossdomain requests."

From Thomas Pons' answer here.

Upvotes: 26

Related Questions