我正在运行 rocket.rs 后端,我的 Flutter Web 应用程序向其发送请求,但无法通过 OPTIONS 响应。
我尝试在后端添加 CORS(rocket_cors)并提供一个 options 响应,但仍然返回:
Error: XMLHttpRequest error.
dart:sdk_internal 124039:30 get current
packages/http/src/browser_client.dart.lib.js 214:124 <fn>
我已经将以下内容添加到我的火箭项目中:
#[options("/")]
fn send_options<'a>(path: PathBuf) -> Response<'a> {
let mut res = Response::new();
res.set_status(Status::new(200, "No Content"));
res.adjoin_header(ContentType::Plain);
res.adjoin_raw_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
res.adjoin_raw_header("Access-Control-Allow-Origin", "*");
res.adjoin_raw_header("Access-Control-Allow-Credentials", "true");
res.adjoin_raw_header("Access-Control-Allow-Headers", "Content-Type");
res
我的Flutter应用正在运行此请求:
Future<String> fetchData() async {
final data2 = await http.get("http://my-web-site.com").then((response) { // doesn't get past here
return response.body;
});
return data2;
}
问题:这是响应OPTION请求的正确方式吗?如果不是,我该如何在rocket.rs中实现它?
GET
请求,浏览器会跳过OPTIONS
预检并直接执行GET
。因此,您可能需要在GET
处理程序中包含 CORS 标头。 - Lambda Fairy