Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过qooxdoo认证的跨源XHR_Javascript_Cors_Qooxdoo - Fatal编程技术网

Javascript 通过qooxdoo认证的跨源XHR

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)成功

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。我要寻找的是快速而肮脏的解决方法,以启动并运行开发过程。最好的方法是什么?不修补框架代码就可以完成吗?

无需弄脏;-)的构造函数接受委托,该委托具有
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