Javascript 角度JS-can';无法使用$http.post接收任何响应

Javascript 角度JS-can';无法使用$http.post接收任何响应,javascript,json,angularjs,cors,angular-http,Javascript,Json,Angularjs,Cors,Angular Http,我正在尝试使用Angular JS从web服务获取响应,我可以通过shell使用简单的curl命令完美地访问该响应: curl --header "Content-type: application/json" --request POST --data '{"username": "name", "password": "pwd"}' 192.168.2.1:9000/ws/login 然而,当我试图用Angular和$http.post达到它时,我体验到一些“有趣”的行为 而

我正在尝试使用Angular JS从web服务获取响应,我可以通过shell使用简单的curl命令完美地访问该响应:

curl --header "Content-type: application/json" --request POST 
     --data '{"username": "name", "password": "pwd"}' 192.168.2.1:9000/ws/login

然而,当我试图用Angular和
$http.post
达到它时,我体验到一些“有趣”的行为

而我的数据是:

    var url = "192.168.2.1:9000/ws/login"
    var postData = {
        username: un,
        password: pwd
    }

我尝试将
postData
作为JSON对象和字符串化JSON

使用这样的呼叫:

    $http.post( url, postData ).
        success(function(data) {
        console.log(data)
        }).
        error(function(data, status, headers, config) {
            console.log(data, status, headers, config)
        })
甚至

    $http({
        url: url,
        method: 'POST',
        data: JSON.stringify(postData),
        headers: {'Content-type': 'application/json'}
        }).
        success(function(data, status, headers, config) {
            console.log('Success: ', data, status, headers, config)

        }).
        error(function(data, status, headers, config) {
            console.log('Error: ', data, status, headers, config)

        })
什么都不做。
什么都没有!
http://
预先添加到url,则会得到:

OPTIONS http://192.168.2.1:9000/ws/login 404 (Not Found) angular.js:7073
OPTIONS http://192.168.2.1:9000/ws/login Origin http://localhost:9000 is not allowed by Access-Control-Allow-Origin. 
我真的很迷路。。。任何建议都将不胜感激

正如亚当所说

如果您使用的是apache:

 Header set Access-Control-Allow-Origin:  http://domain.com, http://localhost/
或者只是

Header set Access-Control-Allow-Origin: *

这样做只是为了测试。对于生产,将源站限制在您的域内。

我已成功设置并运行CORS

我的案例的服务器端绝非微不足道,因为我们使用的是Play!框架和现代浏览器在发送real-POST方法之前发送一个OPTION方法,以某种程度上“预先授权”发送CORS请求

正如在中所述,我必须补充

        $http.defaults.useXDomain = true;
在实际的
$http.post
之前,但我不必删除
'Content-Type'
标题
如果您曾经使用过类似的设置,我建议您查看以下资源:



如果您在发帖子的同一个盒子上本地运行服务器会怎么样?您是否尝试过不添加
标题
?我想您自己已经回答了这个问题。。。访问控制允许原点不允许选项原点。您的web服务正在运行,而angular应用程序正在运行。您不能向其他站点发出AJAX请求(scheme:host:port的组合)。在这里阅读更多:你可能需要这样做:@Adam这确实是一个同源问题,第一个404误导了我。但是,我需要以某种方式处理这个问题,因为我的案例不可能有web服务和相同的服务器。ATM我正在使用pythonsimplehttpserver来测试我的angular应用程序,尽管我怀疑我是否能够配置源标题。是否可以抑制头发送或类似的操作(如Adam对django的建议)?