我正在尝试使用$ http服务连接到API,该服务需要为POST
个请求定义某个标头:
app.run(['$http', function($http) {
$http.defaults.headers.post.hello = 'world';
}]);
但是,我的Angular应用会在OPTIONS
之前发送POST
请求,但似乎并未发送自定义标头。
查看此Plunker中的网络标签:http://plnkr.co/edit/tcqIb2q9zIQb3nf2SzyT
请注意,请求发送hello
标头的值world
,但实际上不是:
我在hello
中看到了access-control-request-header
,但它不应该在自己的路线上吗?为什么不发送值world
?
答案 0 :(得分:5)
当您添加标头时,因为您要跨越不同的域,请求首先通过OPTIONS方法将HTTP请求发送到另一个域上的资源,以确定实际请求是否可以安全发送。在此请求中,标头名称在access-control-request-headers中发送,以检查它是否是要发送的安全标头。
如果发送是安全的,那么将使用POST发送标题。
来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests