$ routeProvider:带有X-Requested-With标头的templateUrl请求

tes*_*ter 12 ajax angularjs route-provider

jQuery.ajax()通常发送X-Requested-With带有XMLHttpRequestset 的标头作为内容.在服务器上(在PHP中),我通常通过测试来检测:

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

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

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

有没有什么办法让$routeProviderX-Requested-WithXMLHttpRequest

参考:

tes*_*ter 14

FreeNode的#angularjs中给Zerot的帽子提示

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

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

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