使用 qooxdoo 验证跨源 XHR
Authenticated cross-origin XHR with qooxdoo
qooxdoo 的 qx.data.store.Json,当用于跨源请求时,不会发送任何 cookie 或身份验证数据。
这个要求并不像看起来那么罕见。想象一下典型的开发人员设置:localhost:8080 上的 JavaEE 后端 运行,以及由 "source-server" 生成器任务或 IDE 的内置 Web 服务器提供服务的 qooxdoo 应用程序,比方说, localhost:8181.
身份验证成功后,将为本地主机设置一个 JSESSIONID cookie。要使 XHR (localhost:8181 -> localhost:8080) 成功,此 cookie 应与请求一起发送。
很明显,由于 qx.bom.request.Xhr 中缺少对 withCredentials 属性 的支持,因此未发送 cookie,也许需要单独的 RFE。我正在寻找的是快速而肮脏的解决方法,以加快开发过程 运行。最好的方法是什么?不给框架代码打补丁能做到吗?
无需弄脏 ;-) qx.data.store.Json
accepts delegate, qx.data.store.IStoreDelegate
的构造函数,它具有 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。编写自己的商店应该不难。
qooxdoo 的 qx.data.store.Json,当用于跨源请求时,不会发送任何 cookie 或身份验证数据。
这个要求并不像看起来那么罕见。想象一下典型的开发人员设置:localhost:8080 上的 JavaEE 后端 运行,以及由 "source-server" 生成器任务或 IDE 的内置 Web 服务器提供服务的 qooxdoo 应用程序,比方说, localhost:8181.
身份验证成功后,将为本地主机设置一个 JSESSIONID cookie。要使 XHR (localhost:8181 -> localhost:8080) 成功,此 cookie 应与请求一起发送。
很明显,由于 qx.bom.request.Xhr 中缺少对 withCredentials 属性 的支持,因此未发送 cookie,也许需要单独的 RFE。我正在寻找的是快速而肮脏的解决方法,以加快开发过程 运行。最好的方法是什么?不给框架代码打补丁能做到吗?
无需弄脏 ;-) qx.data.store.Json
accepts delegate, qx.data.store.IStoreDelegate
的构造函数,它具有 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。编写自己的商店应该不难。