Angular $ http不会在OPTIONS飞行前发送标头

Bry*_*yce 3 http-headers cors angularjs

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

app.run(['$http', function($http) {
    $http.defaults.headers.post.hello = 'world';
}]);
Run Code Online (Sandbox Code Playgroud)

但是,我的Angular应用程序OPTIONS在之前发送请求POST,并且它似乎没有发送自定义标头.

退房的网络标签在此Plunker:http://plnkr.co/edit/tcqIb2q9zIQb3nf2SzyT

并且观察请求应该在哪里发送hello带有值的标头world,它实际上不是:

在此输入图像描述

我看到helloaccess-control-request-header,但不应该把它放在自己的路线?为什么不发送价值world呢?

Way*_*ery 5

当您添加标头时,因为您要跨越不同的域,请求首先通过OPTIONS方法将HTTP请求发送到另一个域上的资源,以确定实际请求是否可以安全发送.在此请求中,标头名称在access-control-request-headers中发送,以检查它是否是要发送的安全标头.

如果发送是安全的,那么将使用POST发送标头.

来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

  • 不,它首先通过OPTIONS方法在access-control-request-headers中发送头名称,以检查它是否是要发送的安全头. (2认同)