如何在actix-web服务器中添加ACCESS_CONTROL_ALLOW_ORIGINheader?
How to add ACCESS_CONTROL_ALLOW_ORIGIN header in actix-web server?
我正在尝试添加 header 以允许从任何地方调用我的 API。
我尝试使用这个 (https://docs.rs/actix-web/latest/actix_web/http/header/constant.ACCESS_CONTROL_ALLOW_ORIGIN.html) 和值 * 作为响应 header
每个请求我都需要 header,所以我想我需要 wrap()
App::new()
我的cargo.toml:
actix-multipart = "0.4.0"
actix-web = "4.0.1"
actix-service = "2.0.2"
actix-rt = "2.2.0"
下面的代码无效。有人知道怎么做吗?
HttpServer::new(move || {
let api_service = web::scope("/api")
.configure(routes_provider)
.route("/", web::get().to(|| HttpResponse::Ok()));
App::new()
.wrap(Logger::default())
.wrap_fn(|req, srv| {
let fut = srv.call(req);
async {
let mut res = fut.await?;
res.headers_mut()
.insert(ACCESS_CONTROL_ALLOW_ORIGIN, HeaderValue::from_static("*"));
Ok(res)
}
})
.service(api_service)
})
.bind(bind_addr)?
.run()
.await
来自 client-side 的错误(React - Axios)
您是否尝试过将 https://docs.rs/actix-cors/latest/actix_cors/ 中的示例与 allow_any_origin
一起使用?
应用于您的代码可能类似于:
HttpServer::new(move || {
let api_service = web::scope("/api")
.configure(routes_provider)
.route("/", web::get().to(|| HttpResponse::Ok()));
let cors = Cors::default()
.allow_any_origin() // <--- this
.allowed_methods(vec!["GET", "POST"])
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
.allowed_header(http::header::CONTENT_TYPE)
.max_age(3600);
App::new()
.wrap(cors)
.wrap(Logger::default())
.service(api_service)
})
.bind(bind_addr)?
.run()
.await
我正在尝试添加 header 以允许从任何地方调用我的 API。
我尝试使用这个 (https://docs.rs/actix-web/latest/actix_web/http/header/constant.ACCESS_CONTROL_ALLOW_ORIGIN.html) 和值 * 作为响应 header
每个请求我都需要 header,所以我想我需要 wrap()
App::new()
我的cargo.toml:
actix-multipart = "0.4.0"
actix-web = "4.0.1"
actix-service = "2.0.2"
actix-rt = "2.2.0"
下面的代码无效。有人知道怎么做吗?
HttpServer::new(move || {
let api_service = web::scope("/api")
.configure(routes_provider)
.route("/", web::get().to(|| HttpResponse::Ok()));
App::new()
.wrap(Logger::default())
.wrap_fn(|req, srv| {
let fut = srv.call(req);
async {
let mut res = fut.await?;
res.headers_mut()
.insert(ACCESS_CONTROL_ALLOW_ORIGIN, HeaderValue::from_static("*"));
Ok(res)
}
})
.service(api_service)
})
.bind(bind_addr)?
.run()
.await
来自 client-side 的错误(React - Axios)
您是否尝试过将 https://docs.rs/actix-cors/latest/actix_cors/ 中的示例与 allow_any_origin
一起使用?
应用于您的代码可能类似于:
HttpServer::new(move || {
let api_service = web::scope("/api")
.configure(routes_provider)
.route("/", web::get().to(|| HttpResponse::Ok()));
let cors = Cors::default()
.allow_any_origin() // <--- this
.allowed_methods(vec!["GET", "POST"])
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
.allowed_header(http::header::CONTENT_TYPE)
.max_age(3600);
App::new()
.wrap(cors)
.wrap(Logger::default())
.service(api_service)
})
.bind(bind_addr)?
.run()
.await