use actix_cors::Cors;
use actix_web::{http::header, middleware::Logger, web, App, HttpServer};
#[actix_web::main]
async fn main() -> std::io::Result<()> {
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
log::info!("starting HTTP server at http://localhost:8080");
HttpServer::new(move || {
App::new()
.wrap(
Cors::default()
.allowed_origin("http://project.local:8080")
.allowed_origin_fn(|origin, _req_head| {
origin.as_bytes().starts_with(b"http://localhost")
})
.allowed_methods(vec!["GET", "POST"])
.allowed_headers(&[header::AUTHORIZATION, header::ACCEPT])
.allowed_header(header::CONTENT_TYPE)
.expose_headers(&[header::CONTENT_DISPOSITION])
.block_on_origin_mismatch(false)
.max_age(3600),
)
.wrap(Logger::default())
.default_service(web::to(|| async { "Hello, cross-origin world!" }))
})
.workers(1)
.bind(("127.0.0.1", 8080))?
.run()
.await
}