GWT Upload is not working in cross domain request

525 Views Asked by At

I am using GWTUplaod in my application which is working fine if I don't use cross domain.But it is not working correctly in cross domain scenario. Let me explain, GWT Server is at IP address 5.5.5.10 and GWT Client is at IP address 5.5.5.12 , earlier while uploading I was getting error in request due to cross domain then I override servlet doPost and 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);
}

Now my GWTUploadServlet is extending this abstract servlet.

In my web.xml I have specified following entries

<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>

I have referred following link

http://code.google.com/p/gwtupload/issues/detail?id=187

Request is getting successful but I am getting following error on browser console.

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

I didn't get some good solution on it.Please help for it.

0

There are 0 best solutions below