Для более старых версий yaws (yaws-1.90 и ниже) приведенный ниже ответ работает
Теперь, по умолчанию, любой заголовок, указанный как
[{header,"Server: MyOther Server Name"}]
, yaws будет применять и помечать его имя и версию перед заголовком вашего сервера. значение, например:
Server: Yaws 1.91, MyOther Server Name
. Это происходит, когда в вашей функции
out/1
вы заканчиваете значением заголовка, таким как сервер:
out(_A)->
[{header,"Server: ASP.NET Server"},
{html,"<p>I love klacke and yaws ! </p>"}].
Проверяя свой браузер, используя Firebug, вы видите заголовки Response, указанные следующим образом:
Date Thu, 17 Nov 2011 07:59:17 GMT
Content-Length 22
Content-Type text/html
Server Yaws 1.91, ASP.NET Server
Теперь решение:
В yaws src
есть модуль с именем yaws.erl
. В этом модуле проверьте строку: 1332
, вы найдете такую функцию:
make_server_header() ->
HasDav = ?sc_has_dav(get(sc)),
["Server: ", (get(gc))#gconf.yaws, "\r\n" |
if HasDav == true ->
["DAV: 1\r\n"];
true ->
[]
end].
Это фрагмент кода, который добавляет версию yaws и имя сервера поверх значения, указанного в заголовке вашего сервера. Нам нужно изменить его и закомментировать строки, чтобы он возвращал empty list [ ]
или empty string ""
, чтобы он выглядел так:
make_server_header() ->
%%HasDav = ?sc_has_dav(get(sc)),
%%["Server: ", (get(gc))#gconf.yaws, "\r\n" |
%% if HasDav == true ->
%% ["DAV: 1\r\n"];
%% true ->
%% []
%% end].
[]. %% force it to just return empty
Last step
Now we need to re-compile this module and replace the existing yaws.beam file in YAWS-{VSN}/ebin
with the new resulting .beam file we get after compiling this new source. Then reload it in the VM. I hope you can find your way in this last step. One way of pulling this off is by changing the current working directory of your yaws running erlang shell
1> cd("PATH/TO/YAWS/src").
PATH/TO/YAWS/src
Then, execute this (still in the yaws shell) after changing the source of the yaws.erl as we have mentioned above
2> c(yaws).
{ok,yaws}
Now move the generated yaws.beam file from src to ebin. Overwrite/ replace the existing yaws.beam file in ebin with the one from src
$ mv PATH/TO/YAWS/src/yaws.beam PATH/TO/YAWS/ebin/
So, if yaws is running, reload that code by entering in its shell:
3> l(yaws).
Для более новых версий yaws (yaws-1.91 и выше)
Существует параметр, который нужно просто добавить в файл
yaws.conf
server_signature = "MY SERVER SIGNATURE"
И поэтому заголовки будут с
Server: MY SERVER SIGNATURE
person
Muzaaya Joshua
schedule
17.11.2011