http - Erlang Cowboy 更改 HTTP header 中的服务器签名

标签 http rest erlang cowboy

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

亲切的问候, 莱安德罗

最佳答案

实现此目的的最佳方法是使用 onresponse hook

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

   {onresponse, fun custom_onresponse/4}

在此 onresponse 函数中,您可以修改 header 。对于您的特殊情况,您想要删除 Server header 。所以你的 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 中还提供了一个示例牛仔 repo 协议(protocol)。希望这会有所帮助。

关于http - Erlang Cowboy 更改 HTTP header 中的服务器签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591552/

相关文章:

javascript - 是否可以读取另一台服务器中的 json 文件,如何读取?

Android:没有 "/"的改造URL路径

HTTP:200 OK 状态代码后回复期间出错

rest - 使用 Swagger 记录/设计 ASP.NET Web API

erlang - Nitrogen - 动态创建事件

unit-testing - 使用状态记录的单元测试流程

ruby-on-rails - 在 Ruby on Rails 中访问自定义 header 变量

http - 响应幂等 HTTP POST 请求

java - 无法使用 Spring MVC 验证 Facebook 获取无效电子邮件

caching - 不使用保护子句过滤 erlang ets 表