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