Ax ios Опубликовать запрос на express сервер успешно работает с изображениями, не работает с файлами .mp4 - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть топор ios отправить запрос на мой express сервер, который выглядит следующим образом:

const formData = new FormData();
formData.append("file", this.state.file[0]);
const transport = axios.create({ withCredentials: true });

transport
      .post(DomainInfo.baseUrl + path, body, {
        headers: { "Content-Type": "multipart/form-data" },
        timeout: 0
      })
      .then(res => {
        resolve(res.data);
      })
      .catch(error => {
        handleError(reject, error);
      });

Когда я публикую изображение, оно успешно, но когда я пытаюсь опубликовать видео (. mp4) Я получаю сообщение об ошибке: «Доступ к XMLHttpRequest в« https://staging.clubwealth.com/university/organization/contentFolder »от источника« https://127.0.0.1: 3000 »заблокирован политикой CORS: нет« Access-Control » -Allow-Origin 'заголовок присутствует на запрашиваемом ресурсе. " Количество времени, необходимое для выдачи этой ошибки, напрямую соответствует размеру файла .mp4.

Мой Express Сервер

var app = express();
var corsBaseOptions = {
  origin: 'https://127.0.0.1:3000',
  optionsSuccessStatus: 200,
  credentials: true
}
app.use(cors(corsBaseOptions));
app.use(session({...  }
}))
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
var myArgs = process.argv.slice(2);
var port = myArgs[0];
var server = http.createServer(app).listen(port, function(){
  console.log("listening on port ", port);
})
server.setTimeout(50000000000);
module.exports = app;

Я чертовски озадачен. Было бы замечательно, если бы вы, ребята, могли помочь мне указать правильное направление. Спасибо! Я попытался сократить свой почтовый маршрут до простого ответа res.status (200) .send ('ok') и все еще получить тот же результат, поэтому я считаю, что это должна быть какая-то проблема с топором ios или express проблема конфигурации. Не стесняйтесь сказать мне, что я совершенно не прав! XD

1 Ответ

0 голосов
/ 19 февраля 2020

Я нашел свою ошибку. Я упустил из виду самую важную деталь: мой express сервер настроен с nginx в качестве обратного прокси.

Nginx имеет максимальный размер запроса по умолчанию 1 М, поэтому видео не было т работает. Когда размер слишком велик Nginx отвечает 413, что браузеры не отображают должным образом, возможно, поэтому я получаю сообщение об ошибке CORS.

Если кто-то сталкивается с подобной проблемой, на Ubuntu я пошел к etc / nginx / ngninx.conf и добавил строку client_max_body_size 20M; под http. Если у кого-то еще есть дополнительное понимание того, почему я получаю ошибку CORS с файлом 403 в большом размере, это было бы здорово!

Спасибо!

...