Ошибка 413: слишком большая полезная нагрузка при загрузке изображения - PullRequest
1 голос
/ 31 марта 2020

хорошего дня.

Я пытаюсь загрузить изображение с локального компьютера, используя base64 для обнаружения изображения. И все отлично работает в localhost и почтальоне. Но после развертывания я получил ошибку CROS.

У меня уже есть промежуточное ПО cors в server.js

const express = require("express");    
const cors = require("cors");
const bodyParser = require("body-parser");

const app = express();

app.use(cors());

app.use(bodyParser.json({ limit: "10000kb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "10000kb", extended: true }));

Промежуточное программное обеспечение cors отлично работает при извлечении изображения с URL, Но когда я попытался загрузить изображение с локального с помощью base64 , консоль показала:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

Вот решение, которое я пробовал:

  1. cors -where
App.js

    const proxyUrl = 'https://cors-anywhere.herokuapp.com/';

    fetch(proxyUrl + API_CALL.IMAGE_URL, {
          method: 'post',
          headers: {'Content-Type': 'application/json'},
          body: JSON.stringify({
            inputLink: inputLink,
            inputMethod: inputMethod
          }),
          credentials: 'include'
        })

Затем отображается 413 payload too large.

Поскольку при тестировании в localhost и почтальоне нет ошибок, я обнаружил, что в некоторых статьях сказано: это все еще может быть ошибка cors.

CORS preflight

сервер. js

    const corsOptions = {
        origin: 'https://front-end-url/',
        methods: 'GET, POST, PUT',
        credentials: true,
        allowedHeaders: 'Content-Type,Authorization',
        exposedHeaders: 'Content-Range,X-Content- Range'
    };
    app.options('/imageUrl', cors(corsOptions));

Показывает ошибку:

CORS policy: Response to preflight request doesn't pass access control check: 
The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' 
when the request's credentials mode is 'include'
После удаления credentials: 'include' снова отображается 413 payload too large.

Я так растерялся ... Кто-нибудь знает, как это исправить? Спасибо.

1 Ответ

3 голосов
/ 31 марта 2020

Окончательно исправьте ошибку, поместив express.json() ПОСЛЕ bodyParser.

следующим образом:

app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(express.json());

При запуске express. json () во-первых, express установит глобальный лимит в 1 МБ.

Для следующего человека, которому требуется более подробная информация: Ошибка: запрос слишком большой И для человека, которому нужно установить Nginx файл конфигурации: Увеличение client_max_body_size в Nginx conf на AWS Elasti c Beanstalk

...