2013-05-24 12 views
5

Występuje naprawdę dziwny problem, gdy żądania HTTP przeglądarki są odrzucane przez proste złącze używane przez serwer Restart.Restlet z prostym złączem zrzucającym żądania?

setup

Serwer:

  • Restlet 2.1.2 Serwer
  • Restlet-Proste rozszerzenie (pochodzi z Simple 4.1.21)
  • Restlet-krypto przedłużenia do strawienia uwierzytelniania

serwer obsługuje strony internetowe w przeglądarkach i używa XMLHttpRequest javascript do pobierania aktualizacji. Niektóre z tych próśb XMLHttpRequests nie są jednak kompletne. Debugger javascript dla przeglądarki Chrome pokazuje status "nieudany"; Debuger Firefoksa rejestruje czas zakończenia bez kodu stanu HTTP i zarejestrowanej odpowiedzi. Sniffer pakietów wskazuje, że problematyczne żądania są faktycznie wysyłane na serwer, ale serwer nigdy nie odpowiada. Debugowanie pokazuje, że te żądania nigdy nie docierają do naszego kodu serwera.

Zweryfikowałem problem z przeglądarką Firefox, Chrome oraz IE. Wszystkie trzy przeglądarki (najnowsze wersje) napotykają ten problem. Ponadto, każda przeglądarka ma powtarzające się i powtarzalne problemy z dokładnie tymi samymi żądaniami. Ten zestaw zapytań różni się jednak między trzema przeglądarkami.

To, co jest naprawdę dziwne, polega na tym, że problem pojawia się, gdy używana jest nazwa komputera serwera (testy w sieci LAN), ale nie w przypadku korzystania z adresu IP urządzenia. Powrót z uwierzytelniania Digest do Basic sprawia, że ​​problem również znika, podobnie jak zastąpienie prostego złącza Jetty.

Jestem skłonny przejść na Jetty teraz, ale nadal chciałbym wiedzieć, co się dzieje. Czy ktoś widział takie zachowanie wcześniej lub ma pojęcie o tym, co się tutaj dzieje?

+0

Powinieneś opublikować swój kod konfigurujący Restart z uwierzytelnieniem. – gma

Odpowiedz

0

Niedawno napotkaliśmy podobny problem z programem Restlet, co również spowodowało, że niektóre żądania nie zostały zakończone. Problemem był niezsynchronizowany dostęp do map w Restletie, który został już naprawiony (https://github.com/restlet/restlet-framework-java/issues/753).

Jeśli zobaczysz jeden lub wiele wątków powodujących duży ruch procesora, może to oznaczać, że ten problem dotyczy użytkownika.

Jeśli twoje żądania XMLHttpRequests będą działać równolegle, możesz mieć na nie wpływ.

+0

Ten konkretny problem prawdopodobnie doprowadziłby do losowych awarii. Jednak w moim przypadku zbiór ignorowanych żądań zawsze jest identyczny. To ustawienie zależy od przeglądarki. Tak więc firefox pomija odpowiedzi na jeden zestaw zapytań, IE do innego zestawu, a Chrome do jeszcze jednego zestawu. –

Powiązane problemy