如何配置 actix-web 以接受来自任何来源的 CORS 请求?

Bop*_*psi 7 cors rust rust-actix actix-web

我正在使用 actix-web 构建 REST API。如何配置 CORS 以接受来自任何来源的请求?

Cors::new() // <- Construct CORS middleware builder
    .allowed_origin("localhost:8081")
    .allowed_methods(vec!["GET", "POST"])
    .allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
    .allowed_header(http::header::CONTENT_TYPE)
    .max_age(3600)
Run Code Online (Sandbox Code Playgroud)

上面的代码在 网络上工作localhost:8081,但不能从0.0.0.0:8081127.0.0.1:8081。我试图"*"允许所有,但它不起作用。如何允许所有或至少允许特定来源然后传递多个 URL?

Dan*_*van 15

从 开始actix-cors = "0.5.0",您可以使用:

Cors::permissive()
Run Code Online (Sandbox Code Playgroud)

但是,他们建议不要在生产中使用它:https://docs.rs/actix-cors/latest/actix_cors/struct.Cors.html#method.permissive


est*_*tin 7

默认情况下允许Allorigins

这是我的简单 CORS 设置(允许所有来源和方法 + 允许发送凭据)

Cors::new().supports_credentials() 
Run Code Online (Sandbox Code Playgroud)

您可以从它开始,并逐步禁止方法、来源和标题。

  • 这很好,我想允许一切。如果我想专门允许 3 个网址怎么办?比如 abc.com、abc.uk、abc.org? (3认同)
  • 要对最新版本(当前为 0.5.4)执行相同操作,请使用“Cors::permissive()” (3认同)
  • 在每个允许的来源上链式调用“allowed_origin” (2认同)