Новое: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 источников: карьерные страницы компаний и джоб-борды.

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

Как настроить CORS в Actix-web?

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

Подключите крейт actix-cors и зарегистрируйте Cors::default() через App::wrap() первым в цепочке; настройте allowed_origin, allowed_methods, allowed_headers и supports_credentials() под нужды вашего SPA.

Настройка CORS в Actix-web

Для настройки CORS используется крейт actix-cors, который предоставляет готовый middleware Cors. Он реализует трейт Transform и регистрируется через App::wrap().

Добавьте зависимость в Cargo.toml:

[dependencies]
actix-web = "4"
actix-cors = "0.7"

Пример конфигурации для типичного SPA-приложения:

use actix_cors::Cors;
use actix_web::{http, middleware::Logger, web, App, HttpServer, HttpResponse};

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        // Настройка CORS для конкретного origin
        let cors = Cors::default()
            .allowed_origin("https://app.example.com")
            .allowed_origin("http://localhost:3000")
            .allowed_methods(vec!["GET", "POST", "PUT", "DELETE", "PATCH"])
            .allowed_headers(vec![
                http::header::AUTHORIZATION,
                http::header::CONTENT_TYPE,
                http::header::ACCEPT,
            ])
            .expose_headers(vec![http::header::CONTENT_DISPOSITION])
            .supports_credentials()   // разрешает cookie/credentials
            .max_age(3600);           // кэш preflight на 1 час

        App::new()
            .wrap(cors)
            .wrap(Logger::default())
            .route("/api/data", web::get().to(data_handler))
    })
    .bind("0.0.0.0:8080")?
    .run()
    .await
}

async fn data_handler() -> HttpResponse {
    HttpResponse::Ok().json(serde_json::json!({ "ok": true }))
}

Для полностью открытого API (публичный сервис без credentials) можно использовать:

let cors = Cors::permissive(); // эквивалент Access-Control-Allow-Origin: *

Для динамической проверки origin используйте метод allowed_origin_fn:

let cors = Cors::default()
    .allowed_origin_fn(|origin, _req_head| {
        origin.as_bytes().ends_with(b".example.com")
    })
    .allowed_methods(vec!["GET", "POST"]);

Порядок wrap важен: CORS должен быть первым (ближайшим к сети), чтобы preflight OPTIONS-запросы обрабатывались до любой аутентификации.

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

  • supports_credentials() несовместим с allowed_origin("*") или Cors::permissive() — браузер отклонит такой ответ; нужно явно указать конкретный origin.
  • Порядок wrap: если middleware аутентификации зарегистрирован раньше CORS, preflight OPTIONS-запросы будут отклонены с 401 до того, как CORS-заголовки будут добавлены.
  • Отсутствие заголовка CONTENT_TYPE в allowed_headers: POST с JSON-телом отправляет preflight, и без разрешённого Content-Type он провалится.
  • Кэш preflight (max_age): слишком большое значение затрудняет отладку при изменении политики; в разработке лучше ставить 0 или 1.
  • Не добавлять кастомные заголовки в expose_headers: если сервер отдаёт, например, X-Request-Id, браузер скроет его от JS, если заголовок не объявлен в expose.
  • Cors::default() без явного allowed_origin блокирует все запросы с другого origin — это не «разрешить всё», а «запретить всё».
  • HTTPS/HTTP несоответствие: origin http://localhost:3000 и https://localhost:3000 — разные origins; оба нужно перечислить явно.

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

  • В каких backend-проектах Actix (Rust) является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Представьте, endpoint на Actix (Rust) иногда отвечает за секунды вместо миллисекунд. Как вы будете искать причину?
  • Проект на Actix (Rust) вырос из MVP в большой production-сервис. Какие проблемы архитектуры и сопровождения вы ожидаете увидеть?
  • Как реализовать graceful shutdown в Actix-web?

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

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

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

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

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

Проверить себя по теме Actix →

Источники

  • https://actix.rs/docs/
←Предыдущий вопросКак реализовать middleware аутентификации (например, JWT) в Actix-web?Следующий вопрос→Как обрабатывать загрузку файлов в Actix-web с помощью multipart?

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

Actixactix-productionActix (Rust)risk-analysistechnical-depth