连续发出多个请求时出现角度CORS问题

时间:2018-07-19 13:13:01

标签: node.js angular express

我正在使用Angular 6,并且我有一个节点api后端。

我遇到了cors问题,但仅偶尔发生。

我每5秒钟执行一次http get请求

   const url = 'https://<removed>.com/api/v1/transactions/' + transactionId;

    interval(5000)
        .pipe(
            switchMap(() => this.httpClient.get(url)),
            tap((response: any) => {
                this.summary = response;
            }),
            takeWhile((response: any) => response.data['status'] !== 'Completed'),
    ).subscribe();

}

第一个请求很好,然后在下一个请求中出现以下错误。

  

无法加载   https://“” .com / api / v1 / transactions / f3debad2-a830-4168-9a03-475389dae7e0:   请求中没有'Access-Control-Allow-Origin'标头   资源。因此,不允许原点“ http://localhost:4200”   访问。响应的HTTP状态代码为502。

     

跨源读取阻止(CORB)阻止了跨源响应   https://“” .com / api / v1 / transactions / f3debad2-a830-4168-9a03-475389dae7e0   MIME类型为text / html。看到   https://www.chromestatus.com/feature/5629709824032768了解更多   详细信息。

同样,这种情况有时只会发生,有时我可以通过200个响应发出任意数量的请求。

在我所有的路由之前,在我的节点后端中。

this.app.use(cors());

1 个答案:

答案 0 :(得分:0)

我不确定这是否可以解决您的CORB问题。我添加了一个超时作为我的CORB问题的临时解决方法。如果我的http请求完成时间太长或重定向太多

,就会出现我的CORB问题
  

样本:如果我对(http://www.redbull.comhttp://www.redbull.orghttp://www.redbull.net等发出多重请求,则其他扩展名可能会重定向到.com,如果花费的时间太长,我会得到与您类似的CORB错误

所以我要做的就是添加超时

// set request option
const requestOption = url => {
    return {
       url      : url,
       method   : 'HEAD',
       json     : true,
       timeout  : 5000,
       headers  : { 'connection': 'Keep-Alive' }
    }
}

// initialize request
const initializeRequest = (callback, option) => {
    request(option, (error, response, result) => {
      // for undefined response
      if(!response)
          return callback(null, response === undefined ? 404 : 200)

      callback(error, response.statusCode);
    }); 
}

// on your controller
module.exports.executeRequest = (req, res) => {
    //call initialize request here and create error handler.
    initializeRequest(your callback, requestOption(your URL));
}