ajax - $routeProvider : templateUrl requests with X-Requested-With header

标签 ajax angularjs route-provider

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-WithXMLHttpRequest ?

引用:

  • $routeProvider Docs - (搜索 templateUrl)
  • jQuery jqXHR - 见 jqXHR.setRequestHeader("X-Requested-With", "XMLHttpRequest")
  • 使用 Angular v1.1.5通过 Google CDN
  • 更新:我找到了 actual commit Angular 开发人员删除的地方 X-Requested-With来自 $http.get .想知道他们为什么要这样做?
  • 更新:https://github.com/angular/angular.js/issues/1004 - 讨论标题被删除的地方。
  • 最佳答案

    尖顶到 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';

    关于ajax - $routeProvider : templateUrl requests with X-Requested-With header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760096/

    相关文章:

    c# - 使用 UpdatePanel 删除行后更新/刷新 Gridview。 ASP.NET C# AJAX

    javascript - 收到错误 : TypeError: $(. ..).live 不是函数

    javascript - 是否可以像在 $routeProvider 中一样在 angularAMD 中设置页面标题?

    javascript - 使用 routeProvider 的模板的多个 Controller

    javascript - 如何编写一个 javascript 函数来执行 ajax 请求而不重复以避免代码异味而不使用 JQuery 库

    javascript - Cordova Instagram 插件 : using with JPG images?

    javascript - 无法对使用 $window 的 Angular 指令进行单元测试

    html - 如何使用 angularjs 将选项卡标题与正文分开?

    angularjs - 可以禁用 $locationProvider 和 $routeProvider 吗?

    php - 使用 AJAX 从客户端插入 mySQL