Files
sst_site/ADMINLTE_CSP_FIX.md
2025-10-26 22:14:47 +09:00

3.2 KiB
Raw Blame History

AdminLTE CSP Fix - Исправление Content Security Policy

Проблема

Content Security Policy (CSP) блокировал загрузку jQuery и Bootstrap из CDN, что приводило к ошибкам:

Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://code.jquery.com/jquery-3.6.0.min.js
Content-Security-Policy: The page's settings blocked a script (script-src-elem) at https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js

Причина

В server.js в настройках helmet CSP для scriptSrc отсутствовали домены:

  • https://code.jquery.com (для jQuery)
  • https://cdn.jsdelivr.net (для Bootstrap)

Решение

Обновлены CSP настройки в /server.js:

ДО:

scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com"],

ПОСЛЕ:

scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],

Полная CSP конфигурация

app.use(helmet({
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://cdn.tailwindcss.com"],
      fontSrc: ["'self'", "https://fonts.gstatic.com", "https://cdnjs.cloudflare.com"],
      scriptSrc: ["'self'", "'unsafe-inline'", "https://cdnjs.cloudflare.com", "https://unpkg.com", "https://cdn.tailwindcss.com", "https://code.jquery.com", "https://cdn.jsdelivr.net"],
      imgSrc: ["'self'", "data:", "https:"],
      connectSrc: ["'self'", "ws:", "wss:", "https://cdnjs.cloudflare.com", "https://cdn.jsdelivr.net", "https://unpkg.com", "https://fonts.googleapis.com", "https://fonts.gstatic.com", "https://cdn.tailwindcss.com"]
    }
  }
}));

Результат

AdminLTE 3 теперь работает полностью:

  • CSS стили загружаются
  • jQuery загружается без ошибок CSP
  • Bootstrap загружается без ошибок CSP
  • AdminLTE JavaScript функции работают
  • Интерактивные элементы функциональны

Тестирование

После исправления CSP:

  1. Перезапустить сервер: npm start
  2. Открыть админку: http://localhost:3000/admin
  3. Проверить консоль браузера - ошибки CSP исчезли
  4. Проверить функциональность: навигация, выпадающие меню, модальные окна

Примечания

  • Исправление обеспечивает безопасность через CSP при разрешении необходимых CDN
  • AdminLTE теперь полностью функциональна с корейской локализацией
  • Все зависимости загружаются правильно