我的系统有两个服务器,一个是主动的,一个是被动的。我正在使用extjs4编写单页应用程序,该应用程序使用来自服务器的数据。 当我从store.load()获得异常时,我想使用不同的URL重试。 我在下面有这个代码,它将命令成功发送到新URL(被动服务器),而不是使用GET使用OPTIONS。同样由于某种原因,新命令也会导致异常,导致无限循环的原因。
知道我做错了什么或其他方法来完成将http命令重试到另一个URL吗?
var store = Ext.create('Ext.data.Store', {
pageSize:25,
autoLoad: false,
model: 'VsaGui.VPool',
proxy: {
type: 'rest',
url: activeMgmtUrl + 'vsacmd.xml?cmd=list_vpools',
reader: {
totalProperty: 'vpools-count',
type: 'xml',
record: 'vpool'
},
listeners: {
exception: function(proxy, response, operation, eOpts ){
p = store.getProxy();
p.url = passiveMgmtUrl + 'vsacmd.xml?cmd=list_vpools';
p.read(operation);
}
}
}
});
我做了一些研究,似乎问题不在代码中,而是在我的重试中我访问和外部URL(passiveMgmtUrl =“http://192.168.1.54/”)。 这就是Firefox发送OPTIONS方法的原因,而在IE9下第二个请求最终会出现“拒绝访问”。 那么关于如何连接到外部URL的任何想法?
答案 0 :(得分:1)
如果您的第二个请求是另一个域,则必须使用jsonp作为代理而不是ajax(rest只是ajax的专用版本)。 Jsonp将允许您向外部域发出请求,否则您将被锁定到服务器的域中。
有关详细信息,请参阅http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.JsonP。