Laravel angularjs Request :: ajax () всегда false

Я создаю приложение с angularjs и laravel 4. Все в порядке, но мне нужно теперь разрешить только запросы XHR.

Это то, что у меня есть в начале моего контроллера. Но это утверждение всегда ложно.

if (!\Request::ajax()) { return Response::json(array('halt'=>Request::ajax())); }; 

В угловой я использую стандартный сервис $ http.

 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() ) 

Solutions Collecting From Web of "Laravel angularjs Request :: ajax () всегда false"

При выполнении вызовов AJAX заголовок X-Requested-With часто устанавливается в XMLHttpRequest . Метод Laravel's Request::ajax() построен поверх метода Symfony2, который просто проверяет наличие этого заголовка.

В октябре 2012 года Angular.js удалили этот заголовок, потому что считали, что он редко используется.

Поскольку @Thrustmaster и вы упомянули в комментариях, вам нужно установить:

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

Если вы не захотите модифицировать внешнее угловое приложение (или не можете) и скорее измените свой код Laravel, чтобы различать запросы Angular JS AJAX и другие запросы, вы также можете использовать Request::wantsJson() :

 if(Request::wantsJson()) { // Client wants JSON returned } else { // Client does not want JSON returned } 

Метод wantsJson полагается на стандартный Accepts HTTP-заголовок (а не на нестандартный заголовок X-Requested-With ) на наличие application/json . Пока Угловой JS оставляет это по умолчанию, и вы не удаляете его специально, этот метод должен быть надежным.

Для новичков AngularJs ищет, где добавить $httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"

Вот пример:

 var angularApp = angular .module('angularApp', [ 'ngResource', ]) .config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest'; }]);