簡體   English   中英

連續發出多個請求時,Angular CORS問題

[英]Angular CORS Issue When Making Multiple Requests Consecutively

我正在使用Angular 6,並且我有一個節點api后端。

Iam出現了問題,但僅偶爾發生。

每隔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)阻止了MIME類型為text / html的跨域響應https://“” .com / api / v1 / transactions / f3debad2-a830-4168-9a03-475389dae7e0。 有關更多詳細信息,請參見https://www.chromestatus.com/feature/5629709824032768

再一次,這種情況有時會發生,有時我可以通過200個響應發出我想要的盡可能多的請求。

在我所有的路由之前,我在節點后端有。

this.app.use(cors());

我不確定這是否可以解決您的CORB問題。 我添加了一個超時作為我的CORB問題的臨時解決方法。 如果我的http請求完成時間太長或重定向太多,就會出現我的CORB問題

示例:如果我向( http : //www.redbull.com,http : //www.redbull.org,http://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));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM