Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理GWT/Spring MVC中的SOP-Rest_Java_Spring_Spring Mvc_Tomcat_Gwt - Fatal编程技术网

Java 处理GWT/Spring MVC中的SOP-Rest

Java 处理GWT/Spring MVC中的SOP-Rest,java,spring,spring-mvc,tomcat,gwt,Java,Spring,Spring Mvc,Tomcat,Gwt,我正在实现我的gwtwebapp的客户端,我需要与提供restapi的基于Spring的web服务器交互。我利用DTO模式通过GET和POST进行通信。当我在同一个Tomcat实例上部署GWT客户机和Spring服务器时,一切都正常工作。如果我在两个实例上部署它们,就会得到HTTP状态0,这是应用SOP的标志 在服务器上,我实现并设置了CORS过滤器: @Component public class SimpleCORSFilter implements Filter { public voi

我正在实现我的gwtwebapp的客户端,我需要与提供restapi的基于Spring的web服务器交互。我利用DTO模式通过GET和POST进行通信。当我在同一个Tomcat实例上部署GWT客户机和Spring服务器时,一切都正常工作。如果我在两个实例上部署它们,就会得到HTTP状态0,这是应用SOP的标志

在服务器上,我实现并设置了CORS过滤器:

@Component
public class SimpleCORSFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {

    HttpServletResponse response = (HttpServletResponse) res;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods",
            "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    chain.doFilter(req, res);
}

public void init(FilterConfig filterConfig) {
}

public void destroy() {
}

}
    HttpServletResponse response = (HttpServletResponse) res;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods",
            "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers",
            "X-Requested-With,Content-Type");
在web.xml中,我放了:

<filter>
    <filter-name>simpleCORSFilter</filter-name>
    <filter-class>com.lh.clte.web.util.SimpleCORSFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>simpleCORSFilter</filter-name>
    <servlet-name>rest</servlet-name>
</filter-mapping>

考虑到所有这些,我调整应用程序以适应SOP并允许在不同服务器上部署的最佳方法是什么?谢谢。

在服务器端和客户端设置适当的头可以解决以下问题:

服务器(CORS筛选器):

GWT请求大楼:

    b.setHeader("Content-Type", "application/json");

为什么在请求中设置
访问控制允许
标题?另外,
内容类型
未在响应标题中设置
访问控制允许标题
    b.setHeader("Content-Type", "application/json");