Angularjs $ http.post()仅发送OPTIONS请求

时间:2014-12-08 18:36:17

标签: angularjs post http-post

我正在尝试将一个POST发送到开发服务器。我有一些Angular代码。

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

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

选项响应标题:

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?


编辑:
我通过在请求中添加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请求没有发回错误响应。

0 个答案:

没有答案