3

1000回も質問されていることを質問している場合は申し訳ありませんが、検索しても何も見つかりませんでした:)

私は2つのTomcatをインストールしています。Windows では tomcat 6、Linux マシンでは tomcat 7。Spring を使用するプロジェクトがあり、Spring を介してリクエストを行わずに提供できるようにしたい静的コンテンツがいくつかあります。

ここに私のサーブレット構成があります:

<servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
 <servlet-name>default</servlet-name>
 <url-pattern>/static/*</url-pattern>
</servlet-mapping>

私の静的ファイルは、WEB-INF フォルダーの隣の「静的」フォルダーにあります。

面白いことに、tomcat7 でhttp://myserver.com/myproject/static/css/main.cssにリクエストを送信すると、/webapps/myproject/static/css/main.css 内のファイルが検索されますが、 tomcat6 では、/webapps/myproject/css/main.css で検索し、そのようなファイルがないというエラーを生成します。

両方のサーバーが同じように動作するには、どの構成を微調整する必要がありますか?

4

2 に答える 2

2

あなたは実際に Tomcat のデフォルトのサーブレットを悪用しています。デフォルトのサーブレットは、サーブレット API によって定義されておらず、サーブレット コンテナーに固有です。Tomcat のデフォルト サーブレットには、すべてのコンテンツを公開できるというバグがあることが知られており、このように悪用されると、機密情報への扉が開かれます/WEB-INF/META-INFこれはイシュー 50026として報告されており、Tomcat 6.0.30 以降で修正されています。

解決策は簡単です。デフォルトのサーブレットを明示的にマップするべきではありませんweb.xml。バグ レポートに記載されているように、代わりにこのアプローチを使用する必要があります。

于 2011-01-21T23:05:40.113 に答える
0

BalusCがリンクしているのと同じ質問に対してcaseyが提供したもう 1 つの簡単な回答は、ウェルカム ファイル リストを指定し、最後のウェルカム ファイルをアプリケーション サーブレットの URL パターンにマップすることです。この構成では、デフォルトのサーブレットが静的コンテンツを処理し、一致しない URL はアプリケーションに渡されます。

ケーシーからのコード付きの完全な回答

于 2012-02-23T18:36:10.883 に答える