Ошибка 403, несмотря на добавление статического пути к файлу AWS в django-cors-headers CORS_ORIGIN_WHITELIST - PullRequest
0 голосов
/ 18 мая 2019

Я использую django-summernote для своего текстового поля. Это должно сделать мое текстовое поле похожим на изображение ниже

enter image description here

Теперь статические файлы для вышеупомянутого хранятся в моей корзине AWS S3. Я получаю 403 error в консоли браузера, и ниже показано, как выглядит мое текстовое поле

enter image description here

Ошибка 403 в консоли выглядит следующим образом enter image description here

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса в https://some_bucket_66d.s3.amazonaws.com/static/summernote/font/summernote.woff?1d9aeaaff0a8939558a45be6cd52cd4c. (причина: отсутствует заголовок CORS S Access-Control-Allow-Origin ’). [Узнать больше] загружаемый шрифт: загрузка не удалась (семейство шрифтов: "summernote" стиль: нормальный вес: 400 растяжение: 100 индекс src: 1): неверный URI или межсайтовый доступ запрещен источник: https://some_bucket_6d.s3.amazonaws.com/static/summernote/font/summernote.woff?1d9aeaaff0a8939558a45be6cd52cd4c

Итак, чтобы решить эту ошибку, я сделал pip install django-cors-headers

Добавлено

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
]

Добавил его в мое промежуточное ПО

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
...
]

И добавил нижеприведенные 3 ссылки в мой белый список в моих настройках django. Я не знаю, для чего http://127.0.0.1:9000, но я все равно оставил его там, как это было на странице https://pypi.org/project/django-cors-headers/

CORS_ORIGIN_WHITELIST = [
    "https://some_bucket_66d.s3.amazonaws.com", #This is the bucket path as you see in the error above
    "http://localhost:8080",
    "http://127.0.0.1:9000"
]

Я все еще получаю ту же ошибку даже после внесения ее в белый список в Django Cors, что я делаю неправильно и как я могу это исправить

Попробовал решение, предложенное @jusrDare. Теперь сообщение об ошибке изменилось на следующее

downloadable font: download failed (font-family: "summernote" style:normal weight:400 stretch:100 src index:1): status=2147746065 source: https://some_bucket_66d.s3.amazonaws.com/static/summernote/font/summernote.woff?1d9aeaaff0a8939558a45be6cd52cd4c

Также, если вы не хотите использовать AllowedOrigin как *, вы можете попробовать следующий код

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <CORSRule>
    <AllowedOrigin>http://www.your-site.com</AllowedOrigin>
    <AllowedOrigin>https://www.your-site.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
  </CORSRule>
</CORSConfiguration>

В любом случае, они оба дают мне ту же ошибку

Ответы [ 2 ]

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

Та же ошибка, я вернусь, если я смогу это выяснить сегодня ...

Назад!

Настройка заголовка CORS в AWS, похоже, сработала.

Замените стандартную конфигурацию CORS в разрешениях вашего сегмента на:

<CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Content-*</AllowedHeader>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Все, что я добавил из настроек по умолчанию, это тег заголовка Conten- * Allowed.

Не уверен, почему это работает ТОЧНО,надеюсь, кто-то еще может вмешаться.

0 голосов
/ 19 мая 2019

Потратив целый день на попытки сделать эту работу.Я наконец-то нашел CDN со шрифтами summernote, после чего мне не пришлось беспокоиться о CORS

. В мои шаблоны django только что добавили код ниже

    <style>
      @font-face {
            font-family: "summernote";
            font-style: normal;
            font-weight: normal;
            src: url("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/font/summernote.eot");
            src: url("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/font/summernote.eot") format("embedded-opentype"),
            url("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/font/summernote.woff") format("woff"),
            url("https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/font/summernote.ttf") format("truetype");
        }
    </style>

Вы можете получить CDN из этогоссылка https://cdnjs.com/libraries/summernote

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...