Erlang Cowboy在HTTP标头中更改服务器签名

lea*_*iro 4 rest erlang http cowboy

有人能告诉我如何在所有请求中将Erlang Cowboy Framework(即"Cowboy")中的默认服务器签名更改为自定义服务器签名吗?我的意思是HTTP响应头中的键"服务器"的值.

亲切的问候,Leandro

Aks*_*rma 6

实现这一目标的最佳方法是使用onresponse hook

cowboy:start_http接受的,您可以在提供的参数列表onrequestonresponse hooks.基本语法非常简单.它只是一个由原子和函数名称组成的元组.

   {onresponse, fun custom_onresponse/4}
Run Code Online (Sandbox Code Playgroud)

在此响应函数中,您可以修改标头.对于您的特殊情况,您要删除Server标题.所以你custom_onresponse看起来像这样

custom_onresponse(StatusCode,Headers,Body,Req)-> 
                Headers2 = 
                lists:delete({<<"server">>,<<"Cowboy">>},Headers),
                {ok,Req2} = cowboy_req:reply(StatusCode,Headers2,Body,Req),
                Req2.
Run Code Online (Sandbox Code Playgroud)

要更换它,你可以使用keyreplace功能,像这样

Headers2 = 
lists:keyreplace(<<"server">>,1,Headers,{<<"server">>,<<"Your_Header">>})
Run Code Online (Sandbox Code Playgroud)

牛仔回购的示例部分中还提供了一个示例.希望这可以帮助.