Конфигурация CORS, S3 и CloudFront - PullRequest
0 голосов
/ 26 мая 2019

Всякий раз, когда я пытаюсь отправить файл в корзину S3, я получаю следующее сообщение об ошибке:

POST https://api.*.com/sermon 413
Access to XMLHttpRequest at 'https://api*.com/sermon' from origin 'https://*.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Моя корзина S3 ELB конфигурируется следующим образом (для https://api.*.com/sermon):

enter image description here

My Cloudfront настроен следующим образом (для https://api.*.com/sermon):

enter image description here enter image description here enter image description here

Я также настроил триггер CloudFront Origin Response в качестве лямбда-функции:

'use strict';

// If the response lacks a Vary: header, fix it in a CloudFront Origin Response trigger.

exports.handler = (event, context, callback) => {
    const response = event.Records[0].cf.response;
    const headers = response.headers;

    if (!headers['vary'])
    {
        headers['vary'] = [
            { key: 'Vary', value: 'Access-Control-Request-Headers' },
            { key: 'Vary', value: 'Access-Control-Request-Method' },
            { key: 'Vary', value: 'Origin' },
        ];
    }
    callback(null, response);
};

Статус HTTP:

enter image description here

Что-то мне не хватает?

1 Ответ

1 голос
/ 28 мая 2019

Настройка CORS на S3, но похоже, что вы используете HTTP 413 («Слишком большая полезная нагрузка») в CloudFront до достижения S3.Таким образом, эта проблема на самом деле не связана с CORS.

HTTP 413 обычно означает превышение размера запроса CloudFront на 20 КБ или длины URL-адреса на 8 КБ.Обратите внимание, что «размер запроса» определен, чтобы включать заголовки запроса и строки запроса, но не тело запроса.

Итак, прежде всего, убедитесь, что ограничения размера запроса и длины URL-адреса не превышены.И что любая полезная нагрузка находится в теле POST , а не в заголовке запроса.

Также посмотрите, будет ли работать загрузка файлов меньшего размера (<100 МБ), чтобы исключить любые проблемы, связанные с multipartдобавления. </p>

...