повторить попытку загрузки магазина с другим URL-адресом при исключении (используйте внешний URL-адрес) - PullRequest
1 голос
/ 21 сентября 2011

У меня есть система, в которой есть два сервера: один активный и один пассивный. Я пишу одностраничное приложение, использующее 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?

1 Ответ

1 голос
/ 21 сентября 2011

Если ваш второй запрос относится к другому домену, вы должны использовать jsonp в качестве прокси-сервера, а не ajax (rest - просто специализированная версия ajax).Jsonp позволит вам делать запросы к внешним доменам, в противном случае вы заблокированы в домене сервера.

См. http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.JsonP для получения дополнительной информации.

...