13

is there a way to tell if a request is an Angular (1.1.5) $resource request. I'm pretty much looking for a "Request.IsAjaxRequest()" method for this type of request.

I'm looking this as in the HandleUnauthorizedRequest of an overriden AuthorizeAttribute I need to set the context result to some json if an Ajax or angular request or something else if not.

Breandán
  • 1,855
  • 22
  • 34

1 Answers1

36

I don't know well MVC3 but you can set a custom header for all request from AngularJS.

Then on server side you just have to get this header and do what you want with request from angular.

To have custom header in AngularJS just do this :

angular.module('myModule', [])

    .config(['$httpProvider', function($httpProvider) {

        $httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true";

    }])

For use the X-Requested-With you have to do this too :

$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';

It's not set by default anymore because a lot part of the community have to delete this header to enable CORS request

Thomas Pons
  • 7,709
  • 3
  • 37
  • 55
  • Cheers, this works well, though I was initially hoping there was a header already in there I could check. Do you know why it does not get sent with X-Requested-With? – Breandán Sep 25 '13 at 10:26
  • 1
    By default now no before yes. https://github.com/angular/angular.js/commit/3a75b1124d062f64093a90b26630938558909e8d – Thomas Pons Sep 25 '13 at 11:48
  • 1
    This is particularly useful if you are using Yii as your backend and you rely on the `isAjaxRequest` property. – themanatuf Sep 08 '14 at 13:49
  • Also useful for general PHP framework isAjax logic. Phalcon has a similar function too. – Süha Boncukçu Dec 02 '15 at 14:18