Javascript 通过qooxdoo认证的跨源XHR
qooxdoo的qx.data.store.Json用于跨源请求时,不会发送任何cookie或身份验证数据 这一要求并不像看上去那么罕见。想象一个典型的开发人员设置:运行在localhost:8080上的JavaEE后端,以及由“源服务器”生成器任务或IDE内置web服务器(例如localhost:8181)提供服务的qooxdoo应用程序 成功身份验证后,将为localhost设置JSESSIONID cookie。要使XHR(localhost:8181->localhost:8080)成功,此cookie应与请求一起发送 很明显,由于缺少对qx.bom.request.Xhr中withCredentials属性的支持,cookie没有被发送,可能它应该得到一个单独的RFE。我要寻找的是快速而肮脏的解决方法,以启动并运行开发过程。最好的方法是什么?不修补框架代码就可以完成吗?无需弄脏;-)的构造函数接受委托,该委托具有Javascript 通过qooxdoo认证的跨源XHR,javascript,cors,qooxdoo,Javascript,Cors,Qooxdoo,qooxdoo的qx.data.store.Json用于跨源请求时,不会发送任何cookie或身份验证数据 这一要求并不像看上去那么罕见。想象一个典型的开发人员设置:运行在localhost:8080上的JavaEE后端,以及由“源服务器”生成器任务或IDE内置web服务器(例如localhost:8181)提供服务的qooxdoo应用程序 成功身份验证后,将为localhost设置JSESSIONID cookie。要使XHR(localhost:8181->localhost:8080)成功
configureRequest
方法
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。写一家自己的商店应该不难。哦,哇,它很有魅力。我很幸运,在我的应用程序中只有几个qx.data.store.Json调用,但如果有几十个,就会导致大规模重构(例如,使用自写存储)。最好能够为整个应用程序(或URL模式)启用with credentials
@saaj,你认为这值得纳入主流吗?我向qooxdoo的作者提出同样的问题,以防他们偶然发现这个主题。@MartinSchmidt我认为委托中的configureRequest
正是针对特定案例的配置方法,就像您的案例一样。如果存储出现过多次,那么可以将子类qx.data.store.Json
传递给父构造函数。在我的项目中,我通常将Qooxdoo IO类划分为子类,以使它们更方便,比如。我认为这里没有改进的余地,除了将withCredentials
属性添加到qx.io.request.Xhr
。