问题概要:
我陷入了一个奇怪的问题:我对同一个API进行了两次调用,一次成功,另一次返回
504
.
访问XMLHttpRequest
'
https://ocr.mywebsite.ai/tesseract/basic/
'从原点
'
http://localhost:8080
'已被CORS策略阻止:否
请求的
资源。
细节问题
我有一个api,它接受图像为
blob
并用解析的json响应。我有两个映像,因此我使用Promise.all()调用了两次api,如下所示:
let ocrPromises = id_card_images.map((image, index) => {
let header: IHeadersData = {};
header = index === 0 ? {card_side: "front"} : {card_side: "back"};
return this.parseImageUsingOCR(image, header)//makes http call and return promise
});
let ocrData = await Promise.all(ocrPromises);
其中一个请求返回
200
当另一个在超过5秒后失败时立即响应
504个
. 有谁能提出这种行为的可能原因是什么?
遵循chrome网络面板。第一个是失败的请求,第二个是通过的请求。
分析图像
进行实际服务器调用的方法(这是一个角度为7的代码)
parseImageUsingOCR(image, header: IHeadersData): Promise<{ parsed_data: any, s3_url: string }> {
let blob = UtilityService.dataURItoBlob(image);
let transliterationUrl = ConstantService.getTransliterationUrl();
let formData: FormData = new FormData();
formData.append('image', blob);
let userData = StoreService.getUserData();
let transliterationHeader: IHeadersData = UtilityService.getHeaderForOCRParseByCountryAndIdType(
userData.country,
userData.id_card_type
);
transliterationHeader = {
...transliterationHeader,
img_type: 'id_card',
...header,
// "content-type": "application/json"
};
return new Promise((resolve, reject) => {
// alert(JSON.stringify(transliterationHeader));
this.serverService.makePostRequest({url: transliterationUrl, body: formData, header: transliterationHeader})
.subscribe((val: { parsed_data: IUser, raw_data: string, s3_url: string }) => {
if (val.parsed_data) {
resolve({
parsed_data: this.removeAllUndefinedFieldsFromObject(val.parsed_data),
s3_url: val.s3_url
})
} else {
resolve({parsed_data: {}, s3_url: val.s3_url});
}
})
})
}