5

yaws で http-header "Server: "値を (応答の構築中に) 動的に変更したいと思います。私は試した:-

[{status, 200},
 {allheaders,
      [{header,
          ["Server: ","ASP.NET Development Server/10.0.0.0"]
      }]
 },
 {html,Body}
]

1 つではなく2 つの "Server: "ヘッダーが返されました。しかし、それは他のすべてのヘッダーで機能しました。

4

2 に答える 2

3

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

于 2011-11-17T08:24:04.703 に答える
2

2011 年 5 月にリリースされた Yaws のバージョン 1.90 以降では、グローバル構成変数を設定してHTTP 応答ヘッダーserver_signatureをカスタマイズできます。また、この記事の執筆時点では、仮想サーバーごとにオーバーライドを可能Serverにするプロセスを進めているため、必要に応じて、さまざまな仮想サーバーからさまざまなヘッダーを提供できます。この変更は、2012 年 2 月初旬にyaws github リポジトリに追加され、その後、リリースが決定されるたびに Yaws 1.93 に表示されます。server_signatureServer

于 2012-02-02T14:50:31.140 に答える