Telegram OAuth: Content Security Policy блокирует загрузку виджета
Пытаюсь прикрутить к сайту авторизацию через Telegram. Настроил и скопировал скрипт с https://core.telegram.org/widgets/login, развернул на проде через HTTPS (серт letsencrypt). Firefox ругнулся:
Content Security Policy: Параметры страницы заблокировали загрузку ресурса https://telegram.org/js/telegram-widget.js?15 («script-src»). bundle.js:1:281
Сервер работает на Express, подключил helmet, настроил заголовки следующим образом:
this.app.use(helmet.contentSecurityPolicy({
defaultSrc: ["*"],
styleSrc: ["self", "unsafe-inline"],
scriptSrc: ["self", "unsafe-inline", "unsafe-eval", "telegram.org"]
}));
Продолжает ругаться. Что я делаю не так?
Ответы (1 шт):
Автор решения: arelive
→ Ссылка
Оказывается, в опциях метода contentSecurityPolicy указывается не сам набор нужных ограничений, а вот такая структура:
this.app.use(helmet.contentSecurityPolicy({
useDefaults: true,
directives: {
defaultSrc: ["'self'", "oauth.telegram.org"],
styleSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-eval'", "telegram.org"]
}}));
Это рабочий вариант для добавления виджета ТГ на свой сайт.