Jestem bardzo zdezorientowany z reinkarnacją XMLHttpRequest i XDomainRequest i chciałbym pomóc. Więc oto moje wnioski:XDomainRequest Vs XMLHttpRequest na IE8 i IE9
- XDomainRequest w IE8 i IE9 wydaje się być jakiś XMLHttpRequest klasy sub
- XDomainRequest brakuje "withCredentials"
- XDomainRequest brakuje "onLoad" (?) zdarzenie zmuszające do użycia stanu i statusu IF - EDYCJA: To nie jest dokładnie prawda. onLoad jest dostępny, jeśli utworzysz XDomainRequest w IE8 i IE9. Jeśli jednak zostanie utworzone wystąpienie XMLHttpRequest w EI8 lub IE9, usługa onLoad nie będzie dostępna. Zobaczymy poniżej, dlaczego jest to ważne.
- Przesyła również dane jako zwykły/tekstowy, a nie jako formularz zmuszający do analizy strumienia wejściowego na końcu.
- Nawet jeśli dyrektywa "Zezwalaj na nagłówki" serwera CORS pozwala na odczytanie zestawu plików przez klienta, XDomainRequest nie ujawnia go, uniemożliwiając użycie identyfikatorów sesji przechowywanych w pamięciach cookie do uwierzytelniania.
- Wreszcie, jeśli się nie mylę, zezwala na to tylko metody POST i GET http, które są bezużyteczne dla usług internetowych RestFull.
Ta lista nie jest kompletna i jak powiedziałem, jest oparta na moich wnioskach. Jednak tutaj zaczyna się zamieszanie. Mam aplikację, w której za pośrednictwem Ajax muszę:
- Uzyskanie (cross domain) za pomocą GET klucza szyfrowania wraz z powiązanym z nim identyfikatorem sesji.
- Zaszyfruj moje hasło użytkownika za pomocą tego klucza (tutaj nie ma problemu)
- Zaloguj się do domeny krzyżowej (gdzie dostałem klucz w kroku 1), używając nazwy użytkownika POST i x-www-urlencoded i zaszyfrowanego hasła.
Teraz dla wszystkich wyżej wymienionych powodów nie mogę tego zrobić z XDomainRequest:
- pierwsze dlatego, że XDomainRequest: open (metoda, url) wysyła tylko zwykły tekst i mój wniosek osoby trzeciej spodziewa formularza (Mogę napisać separator filtru/żądania, ale nie o to chodzi).
- Ponieważ mój identyfikator sesji, który przychodzi wraz z kluczem szyfrowania za pośrednictwem nagłówka Set-Cookie (krok 1), nigdy nie jest wysyłany z powrotem do domeny krzyżowej po zalogowaniu się jako nagłówek, ponieważ XDomainRequest nie ujawnia nagłówków.
Niemniej jednak, jeśli w IE8 i IE9 I instancji XMLHttpRequest lekceważąc wszystkie te kontrole opisane here, wszystko działa bez zarzutu !!! OK Nie dostaję zdarzenia onload i nie jestem pewien co to jest historia z "withcredentials", ale IE8 i IE9 wydaje się nie mieć problemu z wykorzystaniem XMLHttpRequest dla cross-domain. Ale dlaczego? Czy nie wszystkie są sprzeczne? Po prostu próbuję wyjaśnić ten problem, ponieważ obawiam się, że użycie XMLHttpRequest w IE8 i IE9 może wrócić i ugryźć w pewnym momencie. Czy mogę poprosić o wyraźny przykład, kiedy ktoś może skorzystać z jednego, a nie z drugiego? Nawet lepiej, czy była jakaś aktualizacja IE8 i IE9, które rozwiązały problem?
Każda pomoc będzie mile widziana Yiannis