Я боролся с этой проблемой уже несколько часов. Основная цель - загрузить файл на серверы S3, используя метод s3.putObject()
. Однако процесс загрузки нестабилен и иногда ведет себя странно.
Проблема заключается в следующем:
- запрос PUT случайным образом получит ошибку CORS и не получить ответ от сервера ... затем автоматически попробуйте снова. После нескольких попыток запрос PUT проходит без каких-либо ошибок CORS и с правильной полезной нагрузкой.
- Иногда он работает с первым запросом PUT
- Иногда происходит сбой 4 раза подряд (что вызывает сетевую ошибку)
Обратите внимание, что я не вызываю функцию загрузки 4 раза. Кажется, он автоматически запускается после получения ошибки CORS.
И да, CORS настроен
Эта функция создает буфер из имеющихся у меня данных и подготавливает полезную нагрузку для загрузки. функция:
export const sendDataForHealthCheck = (csvDataArray, fileName, onEnd) => {
const csv = fileHelper.arrayToCSV(csvDataArray);
const fileContent = Buffer.from(csv, "utf8");
const payload = {
targetName: fileName,
fileContent: fileContent,
onEnd: onEnd,
};
uploadObjectToS3(payload);
};
Затем эта функция заботится о загрузке:
export const uploadObjectToS3 = ({
targetName,
fileContent,
options = {},
onEnd = r => console.log(r)
}) => {
const setParams = {
Bucket: bucketParams.Bucket,
Key: targetName,
Body: fileContent
};
s3.putObject(setParams, (err, data) => {
if (err) {
console.log(err);
const errorObject = {
error: {
type: "Google Cloud Storage",
status: "Fail",
message: err
}
};
onEnd(errorObject);
return errorObject;
} else {
console.log(`File uploaded successfully.`);
onEnd(data);
return data;
}
})
};
На Mozilla я получаю CORS ошибку , на Chrome Я получаю net :: ERR_SSL_BAD_RECORD_MAC_ALERT ошибка, но в обоих случаях иногда это работает, иногда нет (с одним и тем же точным файлом между прочим)
Любые идеи что может быть причиной этой проблемы?