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)
你能帮我解决这个问题吗?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)