经过验证的跨源XHR与qooxdoo

时间:2015-01-20 12:08:23

标签: javascript cors qooxdoo

qooxdoo的qx.data.store.Json,当用于跨源请求时,不会发送任何cookie或身份验证数据。

这个要求并不像看起来那么罕见。想象一下典型的开发人员设置:在localhost:8080上运行的JavaEE后端,以及由“source-server”生成器任务或IDE的内置Web服务器提供的qooxdoo应用程序,例如localhost:8181。

成功验证后,将为localhost设置JSESSIONID cookie。对于XHR(localhost:8181 - > localhost:8080)成功,此cookie应与请求一起发送。

很明显,由于缺乏对qx.bom.request.Xhr中withCredentials属性的支持而未发送cookie,并且可能需要单独的RFE。我正在寻找的是快速而肮脏的解决方法,以便开发和运行开发过程。最好的方法是什么?可以在没有修补框架代码的情况下完成吗?

1 个答案:

答案 0 :(得分:1)

无需变脏;-) qx.data.store.Json的构造函数接受具有configureRequest方法的委托qx.data.store.IStoreDelegate

var delegate = {'configureRequest': function(request)
{
  // request is `qx.io.request.Xhr`
  // request.getTransport() is `qx.bom.request.Xhr`
  var nativeXhr = request.getTransport().getRequest();
  nativeXhr.withCredentials = true;
}};
var store = new qx.data.store.Json('http://localhost/your.json', delegate);

此外,qx.data.store.Json仅为135 SLOC。写自己的商店应该不难。