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>クラックとヨーが大好き! </p>"}].
Firebug を使用してブラウザーを確認すると、次のように指定された応答ヘッダーが表示されます。
日付 2011 年 11 月 17 日木曜日 07:59:17 GMT
コンテンツの長さ 22
コンテンツ タイプ テキスト/html
サーバー ヨーズ 1.91、ASP.NET サーバー
これで解決策:
yawssrc
には、 というモジュールがありますyaws.erl
。このモジュールでは、行:1332
の周りを確認すると、次のような関数が見つかります。
make_server_header() ->
HasDav = ?sc_has_dav(get(sc)),
["サーバー: ", (get(gc))#gconf.yaws, "\r\n" |
HasDav == true の場合 ->
["DAV: 1\r\n"];
真 ->
[]
終わり]。
これは、サーバー ヘッダーで指定された値の上に yaws のバージョンとサーバー名を追加するコードです。これを変更して行をコメントアウトし、次のようにempty list [ ]
orempty string ""
を返すようにする必要があります。
make_server_header() ->
%%HasDav = ?sc_has_dav(get(sc)),
%%["サーバー: ", (get(gc))#gconf.yaws, "\r\n" |
%% if HasDav == true ->
%% ["DAV: 1\r\n"];
%% 真 ->
%% []
%% 終わり]。
[]。%% 空を返すように強制する
最後のステップ
次に、このモジュールを再コンパイルし、既存の yaws.beam ファイルをYAWS-{VSN}/ebin
、この新しいソースをコンパイルした後に得られる新しい結果の .beam ファイルに置き換える必要があります。次に、VM に再読み込みします。この最後のステップで自分の道を見つけられることを願っています。これを実行する 1 つの方法は、erlang シェルを実行している yaws の現在の作業ディレクトリを変更することです。
1> cd("PATH/TO/YAWS/src")。
PATH/TO/YAWS/src
次に、上記のように yaws.erl のソースを変更した後、これを (まだ yaws シェルで) 実行します。
2> c(ヨーズ)。
{わかりました、ヨーズ}
生成された yaws.beam ファイルを src から ebin に移動します。ebin の既存の yaws.beam ファイルを src のファイルで上書き/置換します
$ mv PATH/TO/YAWS/src/yaws.beam PATH/TO/YAWS/ebin/
したがって、yaws が実行されている場合は、シェルに次のように入力して、そのコードをリロードします。
3> l(ヨーズ)。
新しいバージョンの yaws (yaws-1.91 以降) の場合
yaws.conf
ファイル
に追加するパラメータがある
server_signature = "MY SERVER SIGNATURE"
ため、ヘッダーが付属します
Server: MY SERVER SIGNATURE