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

18
我正在使用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)

上述代码在Web上的localhost:8081上运行正常,但在0.0.0.0:8081或127.0.0.1:8081上无法运行。我尝试使用"*"来允许所有,但没有起作用。我该如何允许所有,或者至少允许一个特定的来源,然后传递多个URL?
2个回答

13

11

默认情况下,允许所有来源。

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

Cors::new().supports_credentials() 

你可以从这里开始,逐步禁止方法、来源和头部。


3
这很好,我想允许所有。如果我想特别允许3个URL呢?比如说,abc.com、abc.uk、abc.org? - Bopsi
2
在每个允许的来源上进行allowed_origin链式调用。 - estin
我得到了一个错误[E0599]:在当前作用域中未找到名为new的函数或关联项,用于结构体Cors - Evan Carroll
@EvanCarroll 看起来 actix-core 已经更新了 - 使用 Cors::default() 并查看实际文档 https://docs.rs/actix-cors/0.5.4/actix_cors/struct.Cors.html - estin
3
要使用最新版本(目前为0.5.4)执行相同的操作,请使用Cors :: permissive() - tonayy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接