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

时间:2014-03-23 13:30:19

标签: http rest erlang cowboy

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

亲切的问候, Leandro的

2 个答案:

答案 0 :(得分:6)

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

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

   {onresponse, fun custom_onresponse/4}

在此响应函数中,您可以修改标题。对于您的特殊情况,您要删除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.

要替换它,您可以使用keyreplace function之类的

Headers2 = 
lists:keyreplace(<<"server">>,1,Headers,{<<"server">>,<<"Your_Header">>})

牛仔回购的examples section中还提供了一个例子。希望这会有所帮助。

答案 1 :(得分:1)

manual entry's第三代码片段说明。