Заблокирован CORS на веб-сервере Actix с помощью Cors ::permissive()

#rust #actix-web #rust-actix

#Ржавчина #actix-web

Вопрос:

Я пытаюсь создать простой серверный сервер с помощью Rust, но я продолжаю сталкиваться с ошибкой CORS.

Мой интерфейс react говорит:

 Access to XMLHttpRequest at 'http://127.0.0.1:3002/auth' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
 

Вот мой внутренний код:

 // Route Config //
pub fn routes(cfg: amp;mut web::ServiceConfig) { 
    cfg.route("/auth", web::get().to(auth_handler));
}

// Handler Config //
async fn auth_handler() -> impl Responder { 
    HttpResponse::Ok().json("Works")
}

#[actix_rt::main]
async fn main() -> io::Result<()> { 
    let app = move || App::new().configure(routes);
    let _cors = Cors::permissive();
    HttpServer::new(app).bind("127.0.0.1:3002")?.run().await
}
 

Насколько я понимаю, функция CORS ::permissive() должна позволять работать всем межсайтовым взаимодействиям. Я неправильно понял документы или я неправильно их реализовал?

Ответ №1:

Вам действительно нужно использовать Cors промежуточное программное обеспечение в вашем App via .wrap() :

 let app = move || App::new().wrap(Cors::permissive()).configure(routes);
                         // ^^^^^^^^^^^^^^^^^^^^^^^^^
 

Подробнее о его настройке здесь .

Комментарии:

1. Это работает! Спасибо за быстрый ответ