Angularjs 飞行前选项中的角度$http未发送标头

Angularjs 飞行前选项中的角度$http未发送标头,angularjs,http-headers,cors,Angularjs,Http Headers,Cors,我正在尝试使用$http服务连接到一个API,该服务要求为POST请求定义一个特定的头: app.run(['$http', function($http) { $http.defaults.headers.post.hello = 'world'; }]); 但是,我的Angular应用程序在POST之前发送一个选项请求,并且它似乎没有发送自定义标题 查看此插件中的“网络”选项卡: 请注意,如果请求应该发送一个值为world的hello头,那么它实际上不是: 我在访问控制请求头中看

我正在尝试使用$http服务连接到一个API,该服务要求为
POST
请求定义一个特定的头:

app.run(['$http', function($http) {
    $http.defaults.headers.post.hello = 'world';
}]);
但是,我的Angular应用程序在
POST
之前发送一个
选项
请求,并且它似乎没有发送自定义标题

查看此插件中的“网络”选项卡:

请注意,如果请求应该发送一个值为
world
hello
头,那么它实际上不是:


我在
访问控制请求头中看到了
hello
,但它不应该在自己的行上吗?当您添加头时,为什么它不发送值
world

,因为您要跨越不同的域,请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以确定实际请求是否可以安全发送。在此请求中,将在访问控制请求标头中发送标头名称,以检查它是否是要发送的安全标头

如果发送是安全的,那么邮件头将与邮件一起发送


来源:

那么标题不应该出现在
选项调用中吗?不,它首先通过选项方法在访问控制请求标题中发送标题名称,以检查它是否是要发送的安全标题。感谢您的解释!有一种特殊情况,在
OPTIONS
调用中需要自定义标题。在Azure中运行基于头的版本控制时,剥离
Api版本
头将导致404个错误。没有版本头的资源路径不足以匹配资源。到目前为止,我还没有解决这个问题的办法。@nolexa这个问题很久以前就发布了。我认为您应该能够在飞行前请求中修改以添加
Api版本
,以便发送。