GWT上载在跨域请求中不起作用

GWT上载在跨域请求中不起作用,gwt,cross-domain,asyncfileupload,gwtupload,Gwt,Cross Domain,Asyncfileupload,Gwtupload,我在我的应用程序中使用GWTUplaod,如果我不使用跨域,它可以正常工作。但在跨域场景中它不能正常工作。 让我解释一下, GWT服务器位于IP地址5.5.5.10,GWT客户端位于IP地址5.5.5.12,之前在上传时,由于跨域,我在请求中收到错误,然后我覆盖servlet doPost和doGetMethod @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) thr

我在我的应用程序中使用GWTUplaod,如果我不使用跨域,它可以正常工作。但在跨域场景中它不能正常工作。 让我解释一下, GWT服务器位于IP地址5.5.5.10,GWT客户端位于IP地址5.5.5.12,之前在上传时,由于跨域,我在请求中收到错误,然后我覆盖servlet doPost和doGetMethod

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    try {
        FlowContextManager.getInstance().setFlowId(FlowContextManager.getNextFlowId());
        processCrossDomainHeaders(request, response);
        super.doGet(request, response);
    } catch (Exception e) {
        logger.error(e);
    } finally {
        FlowContextManager.getInstance().setFlowId("");
    }
}

@Override
protected final void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
        ServletException {
    try {
        FlowContextManager.getInstance().setFlowId(FlowContextManager.getNextFlowId());
        processCrossDomainHeaders(request, response);
        super.doPost(request, response);
    } catch (Exception e) {
        logger.error(e);
    } finally {
        FlowContextManager.getInstance().setFlowId("");
    }

}

public void processCrossDomainHeaders(HttpServletRequest request, HttpServletResponse response) {
    HttpServletResponse resp = response;
    HttpServletRequest req = request;
    String header = req.getHeader("Origin");
    if (header != null) {
        resp.addHeader("Access-Control-Allow-Origin", header);
    }
    resp.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");

    header = req.getHeader("Access-Control-Request-Headers");
    if (header != null) {
        resp.addHeader("Access-Control-Allow-Headers", header);
    }
    resp.addHeader("Access-Control-Max-Age", "100");
}

@Override
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.addHeader("Access-Control-Allow-Origin", req.getHeader("Origin"));
    resp.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
    String header = req.getHeader("Access-Control-Request-Headers");
    resp.addHeader("Access-Control-Allow-Headers", header);
    resp.addHeader("Access-Control-Max-Age", "100");
    super.doOptions(req, resp);
}
现在,我的GWTUploadServlet正在扩展这个抽象servlet

在my web.xml中,我指定了以下条目

<servlet>
    <servlet-name>uploadServlet</servlet-name>
    <!-- This is the default servlet, it puts files in session -->
    <servlet-class>com.drishti.ameyo.webclient.server.WebClientUploadServlet</servlet-class>

    <init-param>
        <param-name>corsDomainsRegex</param-name>
        <param-value>.*</param-value>
    </init-param>
</servlet>

我没有得到很好的解决方案。请帮忙。

XMLHttpRequest无法加载…ssionId=d905-556726e0-ses-add-2906-1&cancel=true&random=0.666107305092771。Access Control Allow Origin不允许使用Origin。我不知道这是否适用于您的情况,但请看一看:基本上,它说您应该使用html5 CORS,并在响应中添加飞行前标题(您可以在
doGet
doPost
中执行)。
Blocked a frame with origin "http://10.10.10.192:8888" from accessing a frame with origin "http://10.10.10.250:8888". Protocols, domains, and ports must match. FormPanelImpl.java:32
onSubmitComplete: null SuperDevModeLogger.java:71
onSubmitComplete exception parsing response:  SuperDevModeLogger.java:71
com.google.gwt.xml.client.impl.DOMParseException: Failed to parse: error on line 1 at column 1: Document is empty

  at createStackTrace
  at fillInStackTrace_1
  at fillInStackTrace
  at $fillInStackTrace
  at Throwable_1
  at Exception_1
  at RuntimeException_1
  at DOMException_1
  at DOMParseException_0
  at throwDOMParseException
  at parseImpl_0
  at $parse_3
  at parse_3
  at onSubmitComplete_0
  at $dispatch_22
  at dispatch_23
  at dispatch
  at dispatchEvent_1