2

我正在尝试使用以下代码在 HTTPS URL 上使用 $http 服务:

var request = $http.post('https://my.custom.url/webservice', privateAttributes.requestData);
request.success(function(data, status) {

}).error(function(data, status) {
    console.log('data -', data);
    console.log('status -', status);
});

my.custom.url 与我的 angularJS 应用程序位于不同的域中,但我的网络服务器配置良好,允许跨域 XHR 请求。它应该是一个公共网络服务。

发送请求时,promise 立即被拒绝,因此error()触发该函数。dataundefinedstatus0。_

在 Chrome 中调试器的网络选项卡上,我可以看到与我的$http.post()调用相对应的待处理 OPTIONS 请求。

出于测试目的,我尝试使用 jQuery$.post()方法执行相同的请求,并且没有问题。我认为我的$http服务有问题。

请注意,这不是 XSRF 问题,如果我使用我的 web 服务的 HTTP 版本,则请求是成功的。

谢谢你的帮助。

4

1 回答 1

1

您可能需要告诉它发送 cookie:

在您的配置中,DI$httpProvider然后设置withCredentialstrue

.config(function ($routeProvider, $httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    //rest of route code

关于 angularjs withCredentials 的信息:http://docs.angularjs.org/api/ng . $http

哪些链接到 mozilla 文章:https ://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5

于 2013-06-17T15:52:38.377 回答