我有一個在Glassfish 3.1.2.2下部署的Java應用程序,它使用jersey
來提供剩餘服務。前端寫在angularjs
。我的web.xml
如下:向Glassfish服務器添加過濾器
<web-app>
<servlet>
<servlet-name>qpark rest service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.restfulservice.restful;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>qpark rest service</servlet-name>
<url-pattern>/restservice/*</url-pattern>
</servlet-mapping>
</web-app>
前端在另一服務器(Apache)的運行。當發送從所述前端的請求GlassFish是一個錯誤響應如下:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
這是因爲邏輯前端和後端是由不同的服務器提供服務。爲了避免這種情況,我配置了一個filter
,它在響應頭中添加了Access-Control-Allow-Origin
。該過濾器必須在web.xml
如下注冊:
<servlet>
<servlet-name>Gateway Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.filters.CrossOriginResourceSharingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
我的問題是,我想也映射這個第二過濾器每restservice。也就是說,我想補充這樣的東西
<servlet-mapping>
<servlet-name>Gateway Servlet</servlet-name>
<url-pattern>/restservice/*</url-pattern>
</servlet-mapping>
但這是不允許的。
的問題是如何添加/合/在web.xml
太好了!這是工作。謝謝 – Luixv 2014-11-24 13:20:50