Разрешение образов S3 со шлемом npm

Я использую шлем npm для защиты своего экспресс-приложения, но я хочу разрешить рендеринг изображений из корзины S3. Я получаю эту ошибку, когда использую helment Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:"., что имеет смысл, я нарушаю CSP, который реализует этот шлем.

Единственное, что я смог найти в их документах, это:

app.use(
  helmet({
    contentSecurityPolicy: false,
  })
);

что позволяет отображать мои изображения, но я все еще хочу, чтобы CSP обеспечивал этот шлем. Мне просто нужно внести в белый список мою ссылку S3, но я не могу найти ничего в их документах по этой теме.

я в настоящее время также имею дело с подобной вещью, после исследования, я приближаюсь к app.use(helmet({contentSecurityPolicy: {directives:{...helmet.contentSecurityPolicy.getDefaultDirec‌​tives(),"img-src" : ["'self'", "data: https:"]}}}));

Andrew 15.12.2020 13:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
3 220
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хранитель Шлема здесь.

Helmet по умолчанию устанавливает несколько заголовков, связанных с безопасностью, в том числе один под названием Content-Security-Policy. Политика безопасности контента, или CSP, фактически представляет собой белый список того, что вашей странице разрешено загружать и делать.

Вы видите ошибку, указывающую на то, что ваш CSP не разрешает загрузку изображений откуда-либо, кроме вашего домена ('self') или URI данных (data:). Вы можете исправить это с помощью чего-то вроде:

app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        ...helmet.contentSecurityPolicy.getDefaultDirectives(),
        "img-src": ["'self'", "s3.amazonaws.com"],
      },
    },
  })
);

Чтобы узнать больше о CSP, ознакомьтесь с этим введением на MDN.

Это то, что я думал сделать более понятным в документации Helmet, так что спасибо, что задали этот вопрос.

эй, спасибо за ответ, я попробовал этот код, и я все еще получаю ту же ошибку; Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:". Я пытался настроить "s3.amazonaws.com" так, чтобы он соответствовал моему URL, и все равно безуспешно.

j roc 17.12.2020 18:45

я сделал опечатку; image-src должно быть img-src.

Evan Hahn 19.12.2020 18:03

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

j roc 28.12.2020 21:56

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

j roc 28.12.2020 22:02

Без проблем! Рад, что смог помочь.

Evan Hahn 29.12.2020 01:03

Другие вопросы по теме