Can';t使用Angularjs执行CORS请求

Can';t使用Angularjs执行CORS请求,angularjs,Angularjs,我正在编写我的第一个AngularJS应用程序,在AngularJS中遇到了CORS问题。我尝试过这篇文章中提到的内容,但仍然没有解决这个问题的运气 JS代码(main.JS)如下所示: var app = angular.module("app",[]); app.config(['$httpProvider', function($httpProvider) { delete $httpProvider.defaults.headers.common['X-Requested-Wit

我正在编写我的第一个AngularJS应用程序,在AngularJS中遇到了CORS问题。我尝试过这篇文章中提到的内容,但仍然没有解决这个问题的运气

JS代码(main.JS)如下所示:

var app = angular.module("app",[]);
app.config(['$httpProvider', function($httpProvider) {
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

app.controller("AppCtrl", function ($scope, $http) {
    var postData = "username=demo&password=demo";
    $http.post("http://sampleurl.com/login",postData).success(function(data, status, headers, config)
    {
        console.log(data);
    });

});
 $http({
    url:'http://sampleurl.com/api',
    method:"POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    data: postData
  })
Index.html文件是:

<!DOCTYPE html>
<html>
<head>
    <title>Sample Angular App</title>
</head>

<body ng-app="app" ng-controller="AppCtrl as app">

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>

<script src="main.js"></script>
</body>
</html>
我已经尝试过使用Ajax运行这个请求,它在Ajax中运行得很好。由于某些原因,无法使用Angular使其工作。你知道我做错了什么吗


谢谢

您需要做两件事,在.config中,您需要放置以下内容:

$httpProvider.defaults.withCredentials = true;
然后在您的服务器上,您需要返回一个Access Control Allow Origin头,它可能如下所示:

Access-Control-Allow-Origin:http://URL_OF_SITE_YOUR_ANGULARJS_APP_IS_AT

您需要做两件事,在.config中,您需要放置以下内容:

$httpProvider.defaults.withCredentials = true;
然后在您的服务器上,您需要返回一个Access Control Allow Origin头,它可能如下所示:

Access-Control-Allow-Origin:http://URL_OF_SITE_YOUR_ANGULARJS_APP_IS_AT

嗯。所以基本上,在经过大量的修补之后,我意识到params并没有通过使用

  $http.post("http://sampleurl.com/login",postData)
因此,我将此请求改写如下:

var app = angular.module("app",[]);
app.config(['$httpProvider', function($httpProvider) {
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

app.controller("AppCtrl", function ($scope, $http) {
    var postData = "username=demo&password=demo";
    $http.post("http://sampleurl.com/login",postData).success(function(data, status, headers, config)
    {
        console.log(data);
    });

});
 $http({
    url:'http://sampleurl.com/api',
    method:"POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    data: postData
  })
这件事很好地得到了通过的请求。希望这对其他人有帮助


干杯

好的。所以基本上,在经过大量的修补之后,我意识到params并没有通过使用

  $http.post("http://sampleurl.com/login",postData)
因此,我将此请求改写如下:

var app = angular.module("app",[]);
app.config(['$httpProvider', function($httpProvider) {
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

app.controller("AppCtrl", function ($scope, $http) {
    var postData = "username=demo&password=demo";
    $http.post("http://sampleurl.com/login",postData).success(function(data, status, headers, config)
    {
        console.log(data);
    });

});
 $http({
    url:'http://sampleurl.com/api',
    method:"POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    data: postData
  })
这件事很好地得到了通过的请求。希望这对其他人有帮助


干杯

如果要发送带有凭据的CORS请求“,则需要服务器回复“访问控制允许来源”:“http://您的.request.Origin”。对于具有凭据的请求,大多数浏览器将拒绝通配符(*)回复,如果您想发送具有凭据的CORS请求“”,“您需要服务器回复“访问控制允许来源”:“http://您的.request.Origin”。对于具有凭据的请求,大多数浏览器将拒绝通配符(*)回复,我也遇到了同样的问题,然后我从这个链接读到:

一切都很顺利:)


我也遇到了同样的问题,然后我从这个链接上读到:

一切都很顺利:)


我以前也遇到过同样的问题,我通过添加以下标题来解决此问题:

headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },

我以前也遇到过同样的问题,我通过添加以下标题来解决此问题:

headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },

嘿,马修,谢谢你。我添加了.withCredentials行,至少没有出现“访问控制允许来源”标题错误。再次运行代码后,我在控制台中看到一个选项返回,这很奇怪,因为请求是一个POST。我检查了该请求,并且将Origin设置为NULL。在服务器端,已编程“Access Control Allow Origin”:“*”,这就是CORS的工作方式,将有一个选项请求。嘿,马修,谢谢你。我添加了.withCredentials行,至少没有出现“访问控制允许来源”标题错误。再次运行代码后,我在控制台中看到一个选项返回,这很奇怪,因为请求是一个POST。我检查了该请求,并且将Origin设置为NULL。在服务器端,已编程“Access Control Allow Origin”:“*”,这就是CORS的工作方式,将有一个选项请求。老兄,你让我开心极了!我在这个问题上苦苦挣扎!!!谢谢,谢谢!(附言:这些是我不太喜欢的一些角度:-D)老兄,你让我的日子过得太好了!我在这个问题上苦苦挣扎!!!谢谢,谢谢!(注:这是一些我不太喜欢的角度:-D)