0

我分离了 GWT - 静态代码在 CDN 上,而动态代码在不同的服务器上。我在 Tomcat7 上配置了这个 CORS 过滤器,它工作正常:

http://software.dzhuvinov.com/cors-filter-installation.html

但是,我仍在努力让 Cookie 与 GWT 和 CORS 一起使用。

我主要需要它来保护 XSRF(以及其他一些东西):

https://developers.google.com/web-toolkit/doc/latest/DevGuideSecurityRpcXsrf

看起来我必须在 XMLHttpRequest 中设置 withcredentials=true。

有谁知道如何在 GWT 中做到这一点?

4

1 回答 1

0

默认情况下,Cookie 不与 CORS 一起发送。如果需要它们,则必须将属性设置为GWT 使用withCredentials的低级别。XMLHttpRequest不幸的是,无法从您的 java 代码中设置它。

XMLHttpRequest.java一个简单的技巧是您在源代码树中维护自己的版本(使用相同的命名空间),并create()以这种方式修改方法:

private static native XMLHttpRequest create(String responseType) /*-{
  [...]
  xhr.withCredentials = true;
  return xhr;
}-*/;

注意:从服务器端您也必须发送此标头:

Access-Control-Allow-Credentials: true

否则,在 GWT 中处理身份验证的常规方法是使用带有身份验证信息的特殊标头并在服务器端读取它。

builder.setHeader("X-My-Authenticated-Header", "whatever");

编辑:正如 t.broyer 在下面的评论中指出的那样,RequestBuilder.setIncludeCredentials2.5.1-rc1 中有一个方法。因此,如果您使用此版本,请在创建构建器时调用此方法。

于 2013-02-26T07:10:12.160 回答