Mam problem z połączeniem http w firefoxie. Wiem, że gdy istnieje pochodzenie krzyżowe, firefox najpierw wykonaj OPCJE przed POST, aby poznać nagłówki kontroli dostępu. Z tego kodu nie mam żadnego problemu:Zapytanie o pocztę HTTP z kodem źródłowym w javascript
Net.requestSpeech.prototype.post = function(url, data) {
if(this.xhr != null) {
this.xhr.open("POST", url);
this.xhr.onreadystatechange = Net.requestSpeech.eventFunction;
this.xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
this.xhr.send(data);
}
}
przetestować ten kod za pomocą prostego kodu HTML, który wywołuje tę funkcję. Wszystko jest w porządku i mam odpowiedź OPCJI i POST, i przetwarzam odpowiedź. Ale próbuję zintegrować ten kod z istniejącą aplikacją z użyciem jquery (nie wiem, czy to jest problem), kiedy wysyłanie (dane) wykonuje się w tym przypadku, przeglądarka (firefox) robi to samo, najpierw prośba opcja, ale w tym przypadku nie otrzymania odpowiedzi z serwera i umieszcza komunikat w konsoli:
[18:48:13.529] OPTIONS http://localhost:8111/ [undefined 31ms]
Undefined ... undefined dlatego nie otrzyma odpowiedzi, ale kod jest taki sam, i nie wiem dlaczego w takim przypadku opcja nie otrzymuje odpowiedzi, ktoś ma pomysł?
i debugowania aplikacji serwera i OPCJE dotrze OK do serwera, ale wydaje się, że przeglądarka nie czekać na odpowiedź.
edytuj więcej później: ok, wydaje mi się, że problem polega na tym, że uruchamiam się za pomocą prostego html ze znacznikiem SCRIPT, który wywołuje metodę, która wywołuje żądanie, ale w tej aplikacji, która nie otrzymała odpowiedzi, mam formularz, który robi zdarzenie onsubmit, myślę, że zdarzenie submit zwraca bardzo szybko, a przeglądarka nie ma czasu, aby uzyskać żądanie OPTIONS.
edit więcej później później: WTF, i rozwiązać problem uczynić żądanie POST do synchronizacji:
this.xhr.open("POST", url, false);
Bardzo szybko złożyć réponse i nie może czekać na odpowiedź OPTION przeglądarki, każdy pomysł na to?