Wywołanie XMLHTTP kończy się niepomyślnie w przypadku adresów URL z osadzonymi poświadczeniami użytkownika

Uwaga: Aktualizacja opisana w tym artykule została zastąpiona aktualizacją opisaną w następującym artykule bazy wiedzy Microsoft Knowledge Base:
887606 MSXML uses cached credentials incorrectly

Symptomy

W przypadku wywołań XMLHTTP o następujących formatach:
Xmlhttp.open("GET", 
"http://osoba:mojehas@www.northwindtraders.com/default.asp",
false, "", "");
Xmlhttp.open("GET",
"http://osoba:mojehas@www.northwindtraders.com/default.asp",
false, "osoba", "has");
Xmlhttp.open("GET",
"http://www.northwindtraders.com/default.asp",
false, "osoba", "mojehas");
wywołanie kończy się niepomyślnie i zostaje wyświetlony następujący komunikat o błędzie:
Błąd nieprawidłowej składni
Jednak poniższe wywołanie kończy się pomyślnie.
Xmlhttp.open("GET", "http://www.northwindtraders.com/default.asp", false, "", "");

Przyczyna

Aktualizacja zabezpieczeń programu Microsoft Internet Explorer opisana w następującym artykule z bazy wiedzy Microsoft Knowledge Base nie zezwala na adresy URL z osadzonymi poświadczeniami użytkownika:
832894 MS04-004: Zbiorcza aktualizacja zabezpieczeń dla programu Internet Explorer
.

Więcej informacji

Nawet po zastosowaniu poprawki opisanej w tym artykule wywołania XMLHTTP z adresami URL o następujących formatach nadal kończą się niepomyślnie.
Xmlhttp.open("GET",
"http://osoba:mojehas@www.northwindtraders.com/default.asp",
false);
Xmlhttp.open("GET",
"http://osoba:mojehas@www.northwindtraders.com/default.asp",
false, "osoba", "has");
Trzeba zastosować tę poprawkę, a także zmienić format adresu URL na poniższy.
Xmlhttp.open("GET", "http://www.northwindtraders.com/default.asp", false, "osoba", "mojehas");

Rozwiązanie

Firma Microsoft udostępniła obsługiwaną poprawkę. Ta poprawka pozwala jedynie na przekazywanie poświadczeń użytkownika jako parametrów w wywołaniu metody Open(). Nie pozwala ona na osadzanie poświadczeń użytkownika w adresie URL.

Uwaga: Ta poprawka dotyczy tylko następujących wersji parsera Microsoft XML (MSXML):
  • Microsoft XML 2.6
  • Microsoft XML 3.0 z dodatkiem Service Pack 2
  • Microsoft XML 3.0 z dodatkiem Service Pack 3
  • Microsoft XML 3.0 z dodatkiem Service Pack 4
  • Microsoft XML 4.0 z dodatkiem Service Pack 2
Aby uzyskać dodatkowe informacje dotyczące sposobu uzyskiwania zaktualizowanych plików i dodatkowych szczegółowych informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
887606 MSXML uses cached credentials incorrectly

Obejście problemu

W celu obejścia tego problemu należy użyć następującego formatu.
Xmlhttp.open("GET", "http://www.northwindtraders.com/default.asp", false, "", "");

Stan

Firma Microsoft potwierdziła, że scenariusz, w którym poświadczenia użytkownika są przekazywane jako parametry w wywołaniu metody Open() i nie są osadzone w adresie URL, stanowi problem w przypadku produktów firmy Microsoft wymienionych w sekcji „Informacje zawarte w tym artykule dotyczą” tego artykułu.

Materiały referencyjne

Aby uzyskać dodatkowe informacje, zobacz następujący biuletyn Microsoft Security Bulletin: Aby uzyskać dodatkowe informacje, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
834489 Dostępna jest aktualizacja zabezpieczeń modyfikująca domyślne zachowanie programu Internet Explorer dotyczące obsługi informacji o użytkowniku w adresach URL witryn HTTP i HTTPS
887606 MSXML uses cached credentials incorrectly
269238 INFO: Version List of the Microsoft XML Parser
278674 Determine the Version of MSXML Parser Installed on a Computer
Opisane tu przykłady firm, organizacji, produktów, nazw domen, adresów e-mail, logo, osób, miejsc i zdarzeń są fikcyjne. Ewentualny związek z rzeczywistą firmą, organizacją, produktem, nazwą domeny, adresem e-mail, logo, osobą, miejscem lub zdarzeniem jest niezamierzony i nie należy się go doszukiwać.
Właściwości

Identyfikator artykułu: 832414 — ostatni przegląd: 13.04.2006 — zmiana: 1

Opinia