Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 467новых вакансий за сутки·93 721вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 267
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

DevOps и инфраструктура

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

Другие направления

  • Проджект-менеджер616
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Express.jsВсе вопросы
Express.jsMiddleТеория

Какие популярные сторонние middleware-пакеты используются с Express (cors, helmet, morgan, compression)?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Стандартный набор middleware для Express: cors — настройка CORS-заголовков, helmet — HTTP security headers, morgan — логирование запросов, compression — gzip/brotli сжатие ответов. Каждый решает отдельную production-задачу.

cors — Cross-Origin Resource Sharing

Управляет заголовками Access-Control-Allow-*. Без правильной настройки браузеры блокируют запросы с других доменов:

const cors = require('cors');

// Разрешить конкретные origins
app.use(cors({
  origin: ['https://app.example.com', 'https://admin.example.com'],
  methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
  allowedHeaders: ['Content-Type', 'Authorization'],
  credentials: true,          // разрешить куки
  maxAge: 86400,              // кэш preflight на 24 часа
}));

// Динамические origins (например, для multi-tenant)
app.use(cors({
  origin: (origin, callback) => {
    const allowed = process.env.ALLOWED_ORIGINS.split(',');
    if (!origin || allowed.includes(origin)) {
      callback(null, true);
    } else {
      callback(new Error('Not allowed by CORS'));
    }
  },
}));

Популярные сторонние middleware для Express

helmet — Security Headers

Устанавливает набор HTTP-заголовков для защиты от XSS, clickjacking, sniffing:

const helmet = require('helmet');

app.use(helmet());
// Устанавливает: X-Frame-Options, X-Content-Type-Options,
// Strict-Transport-Security, Content-Security-Policy и другие

// Кастомная CSP
app.use(helmet({
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'", 'https://cdn.example.com'],
      imgSrc: ["'self'", 'data:', 'https:'],
      connectSrc: ["'self'", 'https://api.example.com'],
    },
  },
  // Отключить конкретный заголовок если мешает
  crossOriginEmbedderPolicy: false,
}));

morgan — HTTP Request Logging

Логирует все входящие запросы с методом, URL, статусом и временем ответа:

const morgan = require('morgan');

// dev: цветной вывод для разработки
if (process.env.NODE_ENV === 'development') {
  app.use(morgan('dev'));
}

// production: JSON-формат, совместимый с log aggregators
if (process.env.NODE_ENV === 'production') {
  app.use(morgan('combined', {
    stream: {
      write: (message) => logger.info(message.trim()), // направить в pino/winston
    },
    skip: (req) => req.path === '/health', // не логировать health checks
  }));
}

compression — Gzip/Brotli сжатие

Сжимает тело ответа, уменьшая трафик на 60–80% для JSON и HTML:

const compression = require('compression');

app.use(compression({
  level: 6,           // zlib уровень (0-9), 6 — баланс скорости и размера
  threshold: 1024,    // сжимать только ответы > 1KB
  filter: (req, res) => {
    if (req.headers['x-no-compression']) return false;
    return compression.filter(req, res); // стандартная фильтрация
  },
}));

Рекомендуемый порядок подключения

const app = express();

// 1. Безопасность
app.use(helmet());
app.use(cors(corsOptions));

// 2. Логирование (до парсинга тела)
app.use(morgan('combined'));

// 3. Производительность
app.use(compression());

// 4. Парсинг тела запроса
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ extended: true }));

// 5. Роуты
app.use('/api', apiRouter);

Подводные камни

  • cors с origin: '*' и credentials: true — браузеры блокируют такую комбинацию; нельзя использовать wildcard origin вместе с credentials.
  • helmet ломает некоторые интеграции: crossOriginResourcePolicy блокирует загрузку ресурсов с других доменов (CDN, Google Fonts) — настраивайте директивы явно.
  • morgan с форматом 'dev' в production добавляет ANSI-коды в логи и засоряет log aggregators — используйте 'combined' или кастомный JSON-формат.
  • compression не стоит применять к уже сжатым форматам (JPEG, PNG, PDF, видео) — это только тратит CPU без выигрыша в размере.
  • Отсутствие rate-limiting в этом базовом наборе — добавляйте express-rate-limit отдельно для защиты от DDoS и brute-force.
  • helmet CSP с upgradeInsecureRequests по умолчанию включён и ломает mixed content на HTTP-окружениях (dev, staging без HTTPS).

Частые вопросы на собеседовании

  • В чём разница между app.use() и app.get() / app.post()?
  • Какова роль next() в middleware Express? Что происходит, если его не вызвать?
  • Как работает маршрутизация в Express? Как организовать маршруты с помощью express.Router()?
  • Что такое middleware в Express.js? Объясните цикл запрос-ответ (request-response cycle).

Типичные ошибки

  • Дает общий ответ про Node.js и не называет конкретные API Express.js.
  • Не объясняет, где в lifecycle находится популярные middleware-пакеты.
  • Не разделяет validation, authorization, business logic и persistence.
  • Игнорирует ошибки, лимиты входных данных, observability и тестирование.

Что проверяет интервьюер

  • Может объяснить популярные middleware-пакеты на примере кода.
  • Называет ключевые API: cors, helmet, morgan, compression.
  • Использует точные API Express.js, а не вымышленные hooks/decorators/methods.
  • Видит production-риски: безопасность, отказоустойчивость, логирование и тесты.

Как вы знаете этот вопрос?

Проверить себя по теме Express.js →

Источники

  • https://expressjs.com/en/resources/middleware.html
  • https://github.com/expressjs/cors#readme
  • https://github.com/helmetjs/helmet#readme
  • https://github.com/expressjs/morgan#readme
  • https://github.com/expressjs/compression#readme

Связанные темы

Express.jsmiddleware-designobservability

Вакансии с этим навыком

  • Fullstack JavaScript разработчик