【问题标题】:AngularJS $resource GET works in Chrome but gives a 401 in FirefoxAngularJS $resource GET 在 Chrome 中工作,但在 Firefox 中给出 401
【发布时间】:2015-10-01 22:40:15
【问题描述】:

所以我有一个基本的自定义 GET 使用 $resource 的角度

angular.module('myApp')
  .factory('MyService', function($resource){
    return $resrouce('some url',
    {},
    {
       list: {method:'GET', params:{}}
    });
  });

然后我就这样使用它

MyService.list().$promise.then(function(data){
   //do something
});

当我在 Chrome (33) 中使用它时,它可以工作。但是在 Firefox (10.0.2) 中,我得到了一个

401 unauthorized

如果我直接在 Firefox 中访问 url,我会得到数据。

服务和我的页面托管在不同的盒子上。我想知道它是否与跨站点保护有关?有什么想法吗?

编辑:我尝试按照this 回答启用 CORS,但同样没有帮助。

EDIT2:401 响应没有正文。标题非常基本......

HTTP/1.1: 401 Unauthorized
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 UTC
Content-Length: 1174
Date: Tue, 14 Jul 2015 08:52:16 GMT

【问题讨论】:

  • 您的代码似乎没有任何问题,也许 Chrome 有一个 Firefox 没有的 Auth cookie?请求是否在网络选项卡中给出响应?
  • 感谢您的回复。我没有收到响应正文,但确实收到了基本的响应标头。我会更新问题。

标签: javascript angularjs google-chrome firefox angular-resource


【解决方案1】:

问题解决了。我需要添加

$httpProvider.defaults.withCredentials = true;

看起来这是一个 CORS 错误

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2016-04-18
    • 2021-08-12
    • 2016-07-19
    • 2017-07-28
    相关资源
    最近更新 更多