2014-09-23 34 views
0

的,我們會做這樣的事情在web.xml:的Spring Java - 爲了增加CORS過濾器XML加過濾

<filter> 
    <filter-name>cors</filter-name> 
    <filter-class>MyCorsFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>cors</filter-name> 
    <url-pattern>/secured/*</url-pattern> 
    </filter-mapping> 

但是我們現在是基於Java的配置,怎能我們以編程方式實現這個?

+0

你如何配置你的容器? – chrylis 2014-09-23 11:59:17

回答

0

如果我正確理解你,你正在談論基於Java的彈簧配置。我們也使用基於Java的配置,但仍使用web.xml。你有你的Java配置文件添加爲背景PARAM在web.xml中,像這樣:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>com.spring.AppConfig</param-value> 
</context-param> 

所以,你還可以加上你的過濾器如同上面一樣。

另外,如果您使用的是WebApplicationInitializer配置ServletContext中,你可以做到以下幾點:

public class WebAppInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext container) throws ServletException { 
     container.addFilter("fooFilter", FooFilter.class); 
    } 
} 

編輯:答案在評論質疑 - 銘記我從來沒有這樣做之前,但在文檔尋找ServletContextFilterRegistration,我建議嘗試此獲得映射到特定的URL過濾:

container.getFilterRegistration("fooFilter") 
    .addMappingForUrlPatterns(DispatcherType.REQUEST, true, "/secured/"); 
+0

Hi @Ben,謝謝,明天我會試試WebAppInitializer。我如何指定過濾器將應用於哪個URL?例如。我只希望我的過濾器用於以/ secured/*開頭的請求* – lorraine 2014-09-23 15:28:27

+0

@yin請參閱我的編輯以獲取該問題的答案。 – 2014-09-24 07:23:05