2013-07-20 58 views
12

jQuery.ajax()通常发送X-Requested-With标头,其中XMLHttpRequest设置为内容。在服务器中(PHP),我通常的测试检测这样的:

$is_ajax = $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'

AngularJS,在$routeProvider.when()常见,你可以从服务器获取模板与templateUrl: '/path/on/server'

我的问题是templateUrl请求似乎设置X-Requested-With头,所以没有办法区分任何其他类型的请求templateUrl请求。

有没有办法让$routeProvider发送X-Requested-With作为XMLHttpRequest

参考:

回答

14

帽子的提示来Zerot Freenode的的#angularjs

app.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) { 
    $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 
    $routeProvider.when('/', { 
     templateUrl: '/path/on/server', 
     controller: 'Ctrl' 
    }); 
}); 

编辑:更具体,这是你需要的地方行:

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