CORS POST XHR 或 Fetch 请求不适用于 Actix Rust HTTP 服务器

CORS POST XHR or Fetch request don't work with Actix Rust HTTP server

你能帮我解决这个问题吗?XHR/Fetch 浏览器中的查询不能与我的 Actix 后端服务器一起使用?

我用 Postman 测试了它,它工作正常,但我仍然收到 CORS 错误,尽管我在响应中添加了 "Access-Control-Allow-Origin", "*"

谢谢。

后端

#[derive(Deserialize)]
struct URL{
    t : String, 
    c : i32,
    a : String
}

#[post("/get")]
async fn get_data(query: web::Json<URL>) -> impl Responder{
    println!("Got a form data query");
    HttpResponse::Ok().header("Access-Control-Allow-Origin", "*").body(String::from("Success msg from server"))
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(get_data)
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

前端查询:

fetch("http://127.0.0.1:8080/get", {
    method: 'POST',
    mode: 'no-cors',
    cache: 'no-cache',
    body: JSON.stringify({
    "t":"some data",
    "a":"an example",
    "c":0
})
  });

前端 运行 http://127.0.0.1:7500

您必须在服务器端处理 CORS。您需要安装 actix-cors-0.5.x 库并将其导入文件。 在您的代码中,您可以这样处理(仅限开发代码):

App::new()
   .wrap(Cors::permissive())
   .service(get_data)