Promise.all 仅在使用超过 4 个承诺时获得 'Access-Control-Allow-Origin'
Promise.all get 'Access-Control-Allow-Origin' only when more than 4 promises used
你好吗。
我发现了一些奇怪的问题。
我将从“https://randomuser.me/api/”中获取 20 个人的随机信息
所以我实现了如下代码。
然后它显示 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 503.
错误。
for (let i = 0; i < 20; i++) {
const promise = this.http.get<any>('https://randomuser.me/api/').toPromise();
promises.push(promise);
}
Promise.all(promises).then(function(values) {
console.log(values);
});
奇怪的是,如果我得到 4 人以下的数据,它就不会发生。所以下面的例子可以正常工作。
for (let i = 0; i < 4; i++) {
const promise = this.http.get<any>('https://randomuser.me/api/').toPromise();
promises.push(promise);
}
很奇怪,我尝试使用 Rxjs,使用 forkjoin 运算符,但结果是一样的,它也只允许 4 个 observables。
请帮我。谢谢。
将我的评论变成答案:
503 错误状态可能表示服务器上发生了其他事情,被错误地报告为 CORS 错误。也许您太快地向服务器发出了太多请求,并且由于这个原因它在 OPTIONS 请求上报告了错误,因此它被报告为 CORS 错误,但实际上它是由发出请求太快引起的。
503 状态代码的一般原因是 "service unavailable"。因此,这也可能是由某些保护目标服务器免受过多请求的基础架构造成的。
As I can't modify api, how can I get 20 persons info? Do I have to use timer? or Recursive function? Both of them seems to be not so good solution. How can I solve this on Frontend side?
阅读 API 上的文档或访问支持论坛,了解它实施的速率限制类型。如果找不到任何文档或支持信息,则必须通过测试来解决,然后将请求率限制在该值以下。
更新
文档显示您可以通过一次 API 调用获取 20 个用户。
详情见https://randomuser.me/documentation#multiple。
示例:
https://randomuser.me/api/?results=20
你好吗。
我发现了一些奇怪的问题。
我将从“https://randomuser.me/api/”中获取 20 个人的随机信息
所以我实现了如下代码。
然后它显示 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 503.
错误。
for (let i = 0; i < 20; i++) {
const promise = this.http.get<any>('https://randomuser.me/api/').toPromise();
promises.push(promise);
}
Promise.all(promises).then(function(values) {
console.log(values);
});
奇怪的是,如果我得到 4 人以下的数据,它就不会发生。所以下面的例子可以正常工作。
for (let i = 0; i < 4; i++) {
const promise = this.http.get<any>('https://randomuser.me/api/').toPromise();
promises.push(promise);
}
很奇怪,我尝试使用 Rxjs,使用 forkjoin 运算符,但结果是一样的,它也只允许 4 个 observables。 请帮我。谢谢。
将我的评论变成答案:
503 错误状态可能表示服务器上发生了其他事情,被错误地报告为 CORS 错误。也许您太快地向服务器发出了太多请求,并且由于这个原因它在 OPTIONS 请求上报告了错误,因此它被报告为 CORS 错误,但实际上它是由发出请求太快引起的。
503 状态代码的一般原因是 "service unavailable"。因此,这也可能是由某些保护目标服务器免受过多请求的基础架构造成的。
As I can't modify api, how can I get 20 persons info? Do I have to use timer? or Recursive function? Both of them seems to be not so good solution. How can I solve this on Frontend side?
阅读 API 上的文档或访问支持论坛,了解它实施的速率限制类型。如果找不到任何文档或支持信息,则必须通过测试来解决,然后将请求率限制在该值以下。
更新
文档显示您可以通过一次 API 调用获取 20 个用户。
详情见https://randomuser.me/documentation#multiple。
示例:
https://randomuser.me/api/?results=20