Używam Sencha Touch 2.1.0. Tworzę wywołanie HTTP GET. Jest to prośba CORS. Dlatego też wysyła polecenie OPCJE HTTP przed lotem zgodnie z oczekiwaniami.OPCJE HTTP Żądanie przed lotem Obciążenie anulowane oczekujące Stan w Chrome
Zainstalowałem filtr CORS na moim serwerze i skonfigurowałem go. Połączenia z mojego kodu przebiegały bardzo dobrze do wczoraj. Nagle dziś przestało ładować dane. Kiedy sprawdzić połączenia sieciowe w Chrome, widzę, że metoda OPCJE pokazuje się jako „Load odwołany”
Metoda: opcje
tekst stanu: „Load anulowany”
Typ: czeka
Inicjator: Connection.js : 319
Miałem podobny problem, gdy po raz pierwszy skonfigurowałem filtr CORS. Kiedy wyczyściłem pamięć podręczną przeglądarki, zaczęło działać. Tym razem nie jestem pewien, dlaczego nagle przestał działać. Nie jest on naprawiany nawet po wyczyszczeniu pamięci podręcznej i historii w przeglądarce.
Jeśli wykonam dokładnie to samo połączenie z HTTPRequestor w Firefoksie, działa bardzo dobrze. Oto połączenie. Zamaskowałem URL ze względu na poufność.
OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25 HTTP/1.1
Access-Control-Request-Method: GET
Origin: http://localhost:8080
Access-Control-Request-Headers: accept, origin, x-requested-with
To samo dokładne żądanie daje mi bardzo dobrą odpowiedź od HTTPRequestor. Oto wynik:
OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25
Access-Control-Request-Headers: accept, origin, x-requested-with
Access-Control-Request-Method: GET
Origin: http://localhost:8080
-- response --
200 OK
Date: Wed, 16 Jan 2013 03:19:27 GMT
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: HEAD, GET, POST, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Origin, Accept, Content-Type
Content-Length: 0
Strict-Transport-Security: max-age=15768000, includeSubDomains
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
kod Sencha w sklepie, aby dokonać tego połączenia:
proxy: {
type: 'ajax',
method: 'GET',
url: 'http://myurl/rest/items',
withCredentials: true,
useDefaultXhrHeader: false,
disableCaching: false,
headers: {
"Accept": "application/json"
},
failure: function(response) {
if (response.timedout) {
Ext.Msg.alert('Timeout', "The server timed out :(");
} else if (response.aborted) {
Ext.Msg.alert('Aborted', "Looks like you aborted the request");
} else {
Ext.Msg.alert('Bad', "Something went wrong with your request");
}
},
success: function(response){
Ext.Msg.alert(response.responseText);
}
},
autoLoad: true,
Proszę mi pomóc zrozumieć, w jaki sposób mogę rozwiązać ten problem.
Czy możesz wyświetlić kod JavaScript, którego używasz do złożenia zamówienia? Czy ustawiasz '.withCredentials = true;'? – monsur
@Monsur, Właśnie dodałem kod sencha, który jest używany do wykonania tego połączenia. Tak z wartościąKredencje jest prawdziwe. Ten kod działał do wczoraj i przestał działać nagle. Nie jestem pewien, co poszło nie tak. Nie wprowadziłem żadnych zmian po stronie serwera. –