使用CORS过滤器进行SOAP服务

时间:2015-02-10 15:04:47

标签: java soap cors

我一直在使用Enterprise应用程序,它暴露了soap和restful webservice。我在我的web.xml中使用Restful webservice和跨域调用来实现CORS过滤器。现在我正在尝试使用SOAP服务(我的ajax调用soap发生)。如何在此处配置CORS过滤器以跨域访问

添加代码段

由于Rest实现是servlet映射,我有像我这样的servlet映射

<servlet-name>RestServlet</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.servicedata.service</param-value>
</init-param>
</servlet>


<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

我已将我的应用程序部署在应用程序服务器中, 我的Applciation.xml看起来像这样

<module>
    <web>
      <web-uri>UI.war</web-uri>
      <context-root>Web</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>Router.war</web-uri>
      <context-root>Router</context-root>
    </web>

因此会在http:<hostname>:<port>/Router/services/myservice/123曝光 我可以使用restclient来访问此URL,我得到了响应。 在进行ajax调用时,我的应用程序不允许访问我的服务。[身份验证被拒绝]

所以我为此添加了一个CORS过滤器

class ResponseFilter{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        httpServletResponse.setHeader("Access-Control-Max-Age", "3600");
        httpServletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(request, response);
    }
}

在Web.xml中

<filter>
<filter-name>CORS</filter-name>
<filter-class>com.servlet.ResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/services/*</url-pattern>
</filter-mapping>

它适用于休息,这很好。如果是SOAP

我的肥皂网址为http:<hostname>:<port>/Business/service/Manager

这是URL将在我的wsdl中定义。

因此,当我尝试访问我的应用程序中部署的SOAP时,它不允许访问。不允许交叉源,因为我从本地server.localhost到hostserver的ajax调用

我已经为其配置了CORS,因为它是servlet映射。我该怎么做SOAP服务。

0 个答案:

没有答案