RPC: CORS now accepts Content-Type by default

This commit is contained in:
Vincent Bernardoff 2018-05-04 16:34:29 +02:00 committed by Grégoire Henry
parent 76bf25646c
commit 64183bbcf3

View File

@ -188,6 +188,13 @@ let init_node ?sandbox (config : Node_config_file.t) =
config.shell.prevalidator_limits config.shell.prevalidator_limits
config.shell.chain_validator_limits config.shell.chain_validator_limits
(* Add default accepted CORS headers *)
let sanitize_cors_headers ~default headers =
List.map String.lowercase_ascii headers |>
String.Set.of_list |>
String.Set.(union (of_list default)) |>
String.Set.elements
let init_rpc (rpc_config: Node_config_file.rpc) node = let init_rpc (rpc_config: Node_config_file.rpc) node =
match rpc_config.listen_addr with match rpc_config.listen_addr with
| None -> | None ->
@ -210,12 +217,15 @@ let init_rpc (rpc_config: Node_config_file.rpc) node =
"Starting the RPC server listening on port %d%s." "Starting the RPC server listening on port %d%s."
port port
(if rpc_config.tls = None then "" else " (TLS enabled)") >>= fun () -> (if rpc_config.tls = None then "" else " (TLS enabled)") >>= fun () ->
let cors_headers =
sanitize_cors_headers
~default:["Content-Type"] rpc_config.cors_headers in
Lwt.catch Lwt.catch
(fun () -> (fun () ->
RPC_server.launch ~host mode dir RPC_server.launch ~host mode dir
~media_types:Media_type.all_media_types ~media_types:Media_type.all_media_types
~cors:{ allowed_origins = rpc_config.cors_origins ; ~cors:{ allowed_origins = rpc_config.cors_origins ;
allowed_headers = rpc_config.cors_headers } >>= fun server -> allowed_headers = cors_headers } >>= fun server ->
return (Some server)) return (Some server))
(function (function
|Unix.Unix_error(Unix.EADDRINUSE, "bind","") -> |Unix.Unix_error(Unix.EADDRINUSE, "bind","") ->