我有一些Angular代码,我试图将POST发送到开发服务器 .

var url = 'http://someDevUrl.com',
    data = { 'someKey': 'some value' };
$http.post(url, data);

它发送OPTIONS预检请求 . 我可以看到它到达服务器,服务器给它一个快乐的响应 .

选项响应 Headers :

HTTP/1.1 200 OK
Server: Cowboy
Date: Mon, 08 Dec 2014 18:20:44 GMT
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 30
Access-Control-Allow-Headers: x-requested-with, content-type, accept, origin, authorization, x-csrftoken
Content-Type: text/html; charset=utf-8
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
Via: 1.1 vegur

但是之后Angular永远不会发送POST ...

通常,当$ http.post()仅发送OPTIONS请求时,这意味着OPTIONS请求返回错误(通常是CORS问题) . 但在这种情况下,OPTIONS请求和响应都可以,但它仍然不会发送POST .

有没有人见过这个或者想知道什么可能阻止它发送POST?

EDIT:
我通过在请求中添加 Content-Type: text/plain 标头解决了这个问题:

var url = 'http://someDevUrl.com',
    data = { 'someKey': 'some value' },
    config = {
        headers: {
            'Content-Type': 'text/plain'
        }
   }
};
$http.post(url, data, config);

其中causes it to skip the OPTIONS preflight,从而避免了这个问题 . 我仍然很想知道为什么它不起作用,因为没有CORS问题并且OPTIONS请求没有发回错误响应 .