gpt4 book ai didi

json - AngularJS 获取 JSON 的 HTTP 状态 0

转载 作者:可可西里 更新时间:2023-11-01 15:09:55 24 4
gpt4 key购买 nike

我正在为 JSON 运行 $http.get 并且状态为 0。我已经下载了相同的 JSON 并且 get 在本地工作,并且在 Python 中使用请求库我可以毫无问题地获取 JSON ,但在 AngularJS 中它不起作用。我不明白的是为什么 Angular 没有得到它,但其他一切都是。下面的代码片段。

function AgentListCtrl($scope, $http) {
$http.get('http://foo.bar/api/objects').success(function(data) {
$scope.objects = data;
}).error(function(data, status) {
$scope.status1 = status;
});

这会提供 JSON 并在使用本地文件时对其进行解析,否则会失败并将 status1 设置为 0。

最佳答案

只是为了说明这一点,因为上面的答案中没有直接说明(但在评论中),而且像我一样,一些 Angular 新手可能会花一些时间在这上面:

  • Angular 的 $resource 将能够在另一台服务器上执行 REST 动词,这反过来又会正确响应(使用 status 200)。尽管如此,Angular 仍会失败并显示一条神秘消息,可由状态 0 识别。这进一步误导了你,因为在浏览器的调试器中,你实际上可能会看到服务器的回答。

  • 除非另有说明,否则 Angular 将对跨域请求执行 OPTIONS 请求(至少对于默认的 query() 方法)。通常服务器不会回答所需的内容(即您的陈述)。针对每个请求执行此操作的一种简单方法是将方法指定为 'GET'

    $resource('http://yourserver/yourentity/:id', {}, {query: {method: 'GET'});
  • 响应您的 REST 请求的服务器必须包含 CORS [1] 指定的 header ,以便 Angular 能够正确使用响应。本质上,这意味着在您的响应中包含 Access-Control-Allow-Origin header ,指定允许的请求来源服务器。这个值可能是*

为任何将 AngularJS 与 spring-data-rest-webmvc 集成的人补充这个答案:

  • HATEOAS json 格式的响应将不会被 Angular 正确使用,而是产生错误 Expected response to contain an array but got an object。这是通过将 isArray: false 参数添加到 $resouce 的配置中解决的;

  • [2] 中提供了一个针对 spring-data-rest-webmvc 场景配置 CORS 的非常切题的示例(请参阅 SimpleCORSFilter)

[1] https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS

[2] https://spring.io/guides/gs/rest-service-cors/

关于json - AngularJS 获取 JSON 的 HTTP 状态 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17929804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com