ContainerResponseFilterを使用してDropwizard 1.0.0アプリケーションがあります。一連のヘッダが各リソースに適用されることが予想されますが、ルートレベルのドキュメントにのみ適用されます。Jersey ContainerResponseFilterがすべての応答に適用されていません
Filterクラス:
package com.uk.jacob.filters;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;
import java.io.IOException;
public class SecurityFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
MultivaluedMap<String, Object> headers = containerResponseContext.getHeaders();
headers.add("strict-transport-security", "max-age=31536000");
headers.add("x-content-type-options", "nosniff");
headers.add("x-frame-options", "SAMEORIGIN");
headers.add("x-xss-protection", "1; mode=block");
}
}
Applicationクラス:
package com.uk.jacob;
import com.uk.jacob.filters.SecurityFilter;
import com.uk.jacob.resources.HomepageResource;
import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.client.HttpClientBuilder;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import io.dropwizard.views.ViewBundle;
import org.apache.http.client.HttpClient;
public class websiteApplication extends Application<websiteConfiguration> {
public static void main(final String[] args) throws Exception {
new websiteApplication().run(args);
}
@Override
public String getName() {
return "website";
}
@Override
public void initialize(final Bootstrap<websiteConfiguration> bootstrap) {
bootstrap.addBundle(new ViewBundle<websiteConfiguration>());
bootstrap.addBundle(new AssetsBundle("/public/", "/public"));
}
@Override
public void run(final websiteConfiguration configuration, final Environment environment) {
final HttpClient httpClient = new HttpClientBuilder(environment).using(configuration.getHttpClientConfiguration()).build(getName());
environment.jersey().register(new SecurityFilter());
environment.jersey().register(new HomepageResource(httpClient));
}
}
ルートレベルのドキュメントとは何ですか?ヘッダーが追加されていないときにヘッダーが追加されたときの例と、表示されることを期待する例を追加してください。あなたが提供した情報から、これはちょうどうまくいくはずです。 – pandaadb
私は1つのビューとリソースを持つ私のボックスでクイックテストを実行し、フィルターが正しく適用されています。 – pandaadb
/index.htmlは役に立ちます /image.pngしませんでした。潜在的にこれはAssetsBundleに関連していますか? –