上次有人问我关于OPTIONS,我的知识还停留在HTTP的GET/POST,
现在的HTTP 1.1已经有GET/POST/PUT/DELETE/PATCH了,那还有一个OPTIONS是什么呢?
其实就是flash年代的跨站访问!浏览器firefox/chrome为了网站的安全,在访问前,先发送一个OPTIONS的请求,在得到服务器的回应并允许之后,再发送其它的请求,actix_web提供了actix_cors来解决这下问题!
如下代码:
use actix_cors::Cors;
...
HttpServer::new(move || {
App::new()
.wrap(Cors::new() //
// .allowed_origin("http://127.0.0.1:8080")
.send_wildcard()
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
.allowed_header(http::header::CONTENT_TYPE)
.max_age(3600)
.finish())
.data(pool.clone())
.wrap(actix_web::middleware::Logger::default())
.wrap(crate::middleware::authen_middleware::Authentication)
.wrap_fn(|req, srv| {
srv.call(req).map(|res| res)
})
.configure(config::app::config_services)
})
.bind(&app_url)?
.run()
.await
如上代码,允许所有的访问来源(Access-Control-Allow-Origin: *)
; 如果取消注释,就仅允许来自于http://127.0.0.1:8080的访问!
添加新评论