Google Appengine 上的 GWT 上传 - 跨站点保护
GWT Upload on Google Appengine - cross site protection
我想在 google 应用引擎上为 GWT 应用程序 运行 实现文件上传。我使用了 GWTUpload,但如果我尝试上传文件,会出现以下错误:
<stdout>: 2015-06-14 17:50:35 ERROR UploadServlet:70 - checkCORS error Origin: http://myApp.appspot.com does not match:^$
我查看了 UploadServlet,实际上检查了 Origin aging“^$”。我不太明白这个正则表达式匹配什么“^”似乎是字符串的开头,“$”似乎是字符串的结尾。但是似乎只匹配空字符串?
private boolean checkCORS(HttpServletRequest request, HttpServletResponse response) {
String origin = request.getHeader("Origin");
if (origin != null && origin.matches(corsDomainsRegex)) {
// Maybe the user has used this domain before and has a session-cookie, we delete it
// Cookie c = new Cookie("JSESSIONID", "");
// c.setMaxAge(0);
// response.addCookie(c);
// All doXX methods should set these header
response.addHeader("Access-Control-Allow-Origin", origin);
response.addHeader("Access-Control-Allow-Credentials", "true");
return true;
} else if (origin != null) {
logger.error("checkCORS error Origin: " + origin + " does not match:" + corsDomainsRegex);
}
return false;
}
我无法设置 "corsDomainsRegex" 或覆盖方法 checkCORS(),因为它们都是私有的。这里的实际问题是什么?我该如何解决?
这是一项硬连线检查,可防止人们通过其他域名上传文件。如果您不需要这个,您可以通过将以下内容添加到您的 web.xml(或您希望检查的任何域)来更改 corsDomainsRegex。
<context-param>
<!-- match all domains -->
<param-name>corsDomainsRegex</param-name>
<param-value>.*</param-value>
</context-param>
我想在 google 应用引擎上为 GWT 应用程序 运行 实现文件上传。我使用了 GWTUpload,但如果我尝试上传文件,会出现以下错误:
<stdout>: 2015-06-14 17:50:35 ERROR UploadServlet:70 - checkCORS error Origin: http://myApp.appspot.com does not match:^$
我查看了 UploadServlet,实际上检查了 Origin aging“^$”。我不太明白这个正则表达式匹配什么“^”似乎是字符串的开头,“$”似乎是字符串的结尾。但是似乎只匹配空字符串?
private boolean checkCORS(HttpServletRequest request, HttpServletResponse response) {
String origin = request.getHeader("Origin");
if (origin != null && origin.matches(corsDomainsRegex)) {
// Maybe the user has used this domain before and has a session-cookie, we delete it
// Cookie c = new Cookie("JSESSIONID", "");
// c.setMaxAge(0);
// response.addCookie(c);
// All doXX methods should set these header
response.addHeader("Access-Control-Allow-Origin", origin);
response.addHeader("Access-Control-Allow-Credentials", "true");
return true;
} else if (origin != null) {
logger.error("checkCORS error Origin: " + origin + " does not match:" + corsDomainsRegex);
}
return false;
}
我无法设置 "corsDomainsRegex" 或覆盖方法 checkCORS(),因为它们都是私有的。这里的实际问题是什么?我该如何解决?
这是一项硬连线检查,可防止人们通过其他域名上传文件。如果您不需要这个,您可以通过将以下内容添加到您的 web.xml(或您希望检查的任何域)来更改 corsDomainsRegex。
<context-param>
<!-- match all domains -->
<param-name>corsDomainsRegex</param-name>
<param-value>.*</param-value>
</context-param>