Laravel angularjs Request::ajax() always false

ajax, angularjs, coffeescript, laravel-4, php

Solution

When doing AJAX calls, the `X-Requested-With` header is often set to `XMLHttpRequest`. Laravel's `Request::ajax()` method is built on top of a Symfony2 method that simply checks for the presence of this header.

In October 2012, Angular.js removed this header because they felt that it was rarely used.

As @Thrustmaster and yourself mentioned in the comments, you need to set:

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

Problem

I'm building application with angularjs and laravel 4. Everything is fine but I need now to allow only XHR requests. This is what I have at the beginning of my controller. But this statement is always false. ``` if (!\Request::ajax()) { return Response::json(array('halt'=>Request::ajax())); }; ``` In angular I'm using standard $http service. ``` angular.module('APP') .factory("API", ($http,$q,appClient,apiURL) -> class FB constructor:-> this.deferredData = $q.defer(); info: (reload)-> $http( method: "get" url: apiURL+'game/'+appClient+"/info" ).success((res)-> dostuff() ) ```

Original source

Related problems