Angularjs 和 HTTP headers

Angularjs and HTTP headers

我想在每次发出任何请求时将我的自定义 HTTP header 发送到 REST 服务。我正在使用 Apache HTTP Web 服务器。我有以下代码:

app.config(['$httpProvider', function($httpProvider){

if(!$httpProvider.defaults.headers.get){
    $httpProvider.defaults.headers.get = {};
}

$httpProvider.defaults.headers.get['My-Token'] = 'some_test_token';
}]);

但我在开发工具中看到了下一个:

我的 header 内联到其他。我做错了什么?

您提供的屏幕截图处理的是 OPTIONS 请求,而您正在配置 GET 请求。 OPTIONS 请求作为 HTTP 内容协商实施的一部分发送。

在这种情况下,您将发送预检 OPTIONS 请求,这反过来表明您未来的请求将包含 my-token header。这是期望的行为,因为服务器现在可以指示客户端不要继续此请求或执行条件操作。

在您的浏览器(或您用来调试 HTTP 的其他软件)中,查找 GET 请求,您应该会看到您的 header 已正确包含。

问题不在AngularJS这边。我只是配置 Apache HTTP 服务器和我的应用程序的后端部分。我的 Spring 安全过滤器链阻止了 OPTIONS 请求。