Почему браузеры отображают ошибку CORS в случае ответа 413? - PullRequest
1 голос
/ 05 марта 2020

Я тестировал REST Api, который загружает файл изображения на сервер.

Изображение было слишком большим и превышало максимальный размер тела запроса, поэтому Nginx отклонило его и вернул ответ 413 (Request Entity Too Large) .

Nginx: error.log

* 329 клиент, предназначенный для отправки слишком большого тела: 1432249 байт, клиент: xx.xx.xx. xx, сервер: api.example.com, запрос: «POST / images HTTP / 1.1», хост: «api.example.com», реферер: «https://example.com/posts/create»

Однако я обнаружил, что консоль firefox / chrome сказала:

Chrome: console

Доступ к XMLHttpRequest по адресу https://api.example.com/images 'from origin' https://example.com 'заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Есть ли связь между CORS и ошибкой 413? Откуда это сообщение и почему?

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Проблема в этом случае заключается в том, что в ответе об ошибке не было соответствующего Access-Control-Allow-Origin, поэтому у запрашивающего приложения не было разрешений на его просмотр. Это означает, что даже сообщения об ошибках подпадают под перекрестную политику.

0 голосов
/ 18 апреля 2020

Эта проблема не связана с CORS. Если вы исправите ошибку 413, то ошибка CORS также будет исправлена ​​сама собой. Вы должны проверить, почему происходит ошибка 413. Размер загружаемого изображения больше. Вы можете использовать приведенный ниже код для исправления того же кода «Добавить ниже» в файле запуска -

.UseStartup<Startup>()
        .UseKestrel(options =>
        {
          options.Limits.MaxRequestBodySize = long.MaxValue;
        });

Если он по-прежнему не исправлен, необходимо проверить размер изображения по умолчанию в репозитории сервера. Обычно по умолчанию 1 МБ. Вы можете увеличить client_max_body_size. Это исправит вашу проблему.

...