【问题标题】:GWT Upload on Google Appengine - cross site protectionGoogle Appengine 上的 GWT 上传 - 跨站点保护
【发布时间】:2015-08-30 05:14:43
【问题描述】:

我想为在谷歌应用引擎上运行的 GWT 应用程序实现文件上传。我使用了 GWTUpload,但如果我尝试上传文件,则会收到以下错误:

<stdout>: 2015-06-14 17:50:35 ERROR UploadServlet:70 - checkCORS error Origin: http://myApp.appspot.com does not match:^$

我查看了 UploadServlet,实际上对 Origin 再次进行了检查“^$”。我不太喜欢这个正则表达式匹配的内容,“^”似乎是字符串的开头,而“$”是字符串的结尾。但 is 似乎只匹配空字符串?

  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(),因为它们都是私有的。这里的实际问题是什么?我该如何解决这个问题?

【问题讨论】:

    标签: java servlets cross-domain same-origin-policy


    【解决方案1】:

    这是一项硬连线检查,可防止人们通过其他域名上传文件。如果您不需要这个,您可以通过将以下内容添加到您的 web.xml(或您希望检查的任何域)来更改 corsDomainsRegex。

    <context-param>
        <!-- match all domains -->
        <param-name>corsDomainsRegex</param-name>
        <param-value>.*</param-value>
    </context-param>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 2011-02-26
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多