2013-07-20 89 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';