Olliminatore: Problem beim Auslesen einer XML-Datei

Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/

nur kann ich nicht die Lösung nachvollziehen.
Der zum Schluß angegebene Test funktioniert auch bei mir.
Momentan muss ich umständlich responseText anstatt responseXML nehmen!? Das XML ist eigentlich 100% valid.
(responseXML gibt zwar ein Objekt zurück aber ohne scheinbaren Inhalt.)

Alles mit IE6 (FF no problem)
Der XML Header sieht so aus <?xml version="1.0" encoding="utf-8"?>

  1. Hallo,

    Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/

    nur kann ich nicht die Lösung nachvollziehen.

    Die Lösung war, den Content-Type im HTTP Header auf text/xml zu setzen. Das muss Serverseitig passieren. Womit lieferst du die XML Datei aus?

    Grüße, Ulli

  2. Hallo,

    Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/

    nur kann ich nicht die Lösung nachvollziehen.
    Der zum Schluß angegebene Test funktioniert auch bei mir.

    Du meinst den http://www.datenverdrahten.de/test/ajaxtest.html?

    Momentan muss ich umständlich responseText anstatt responseXML nehmen!? Das XML ist eigentlich 100% valid.
    (responseXML gibt zwar ein Objekt zurück aber ohne scheinbaren Inhalt.)

    Alles mit IE6 (FF no problem)
    Der XML Header sieht so aus <?xml version="1.0" encoding="utf-8"?>

    Die im Test per Ajax-Request ausgelieferte Ressource "http://www.datenverdrahten.de/test/ajaxtest.xml" wird mit Content-Type: text/xml ausgeliefert. Sehen kann man das hier: http://web-sniffer.net/?url=http%3A%2F%2Fwww.datenverdrahten.de%2Ftest%2Fajaxtest.xml&submit=Submit&http=1.1&gzip=yes&type=GET&ua=Mozilla%2F4.0+(compatible%3B+MSIE+6.0%3B+Windows+NT+5.0%3B+.NET+CLR+1.1.4322)+Web-Sniffer%2F1.0.24.

    Teste dort mal Deine XML-Ressource. Mit welchem Content-Type wird diese ausgeliefert?

    Siehe auch hier http://forum.de.selfhtml.org/archiv/2006/6/t130666/#m844814.

    viele Grüße

    Axel

    1. Die im Test per Ajax-Request ausgelieferte Ressource "http://www.datenverdrahten.de/test/ajaxtest.xml" wird mit Content-Type: text/xml ausgeliefert. Sehen kann man das hier: http://web-sniffer.net/?url=http%3A%2F%2Fwww.datenverdrahten.de%2Ftest%2Fajaxtest.xml&submit=Submit&http=1.1&gzip=yes&type=GET&ua=Mozilla%2F4.0+(compatible%3B+MSIE+6.0%3B+Windows+NT+5.0%3B+.NET+CLR+1.1.4322)+Web-Sniffer%2F1.0.24.

      Teste dort mal Deine XML-Ressource. Mit welchem Content-Type wird diese ausgeliefert?

      Siehe auch hier http://forum.de.selfhtml.org/archiv/2006/6/t130666/#m844814.

      Als Ergebnis kommt Content-Type: text/xml; charset=utf-8;

      Wobei mein Code vollgendes ausgibt.

      httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
      httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
      httpRequest.send(null);
      httpRequest.getAllResponseHeaders() //ist leerer String
      httpRequest.responseXML.documentElement // ist null

      1. Hallo

        Wobei mein Code vollgendes ausgibt.

        httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
        httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
        httpRequest.send(null);
        httpRequest.getAllResponseHeaders() //ist leerer String
        httpRequest.responseXML.documentElement // ist null

        Mein IE macht das. Er gibt nur eine Warnung aus:

        Die Seite greift auf Informationen aus anderen Daten zu.
        Dies kann ein Sicherheitsproblem darstellen. Möchten
        Sie den Vorgang fortsetzten?
                                       [Ja] [Nein]

        Bei "Ja" wird der Request ausgeführt und sowohl httpRequest.getAllResponseHeaders() als auch httpRequest.responseXML.documentElement sind befüllt.

        Allerdings stolperst Du mit dieser Idee in eine böse Falle, wenn Du das Ganze mal für nicht-IE-Browser umsetzen willst. Auch bei Ajax gilt die same origin policy siehe auch  http://forum.de.selfhtml.org/archiv/2006/4/t127959/. Du kannst also nicht einfach einen XMLHTTPRequest auf eine ganz andere Domain ausführen.

        Eventuell haben die IEs unter XP da auch bereits striktere Regeln. Probier mal:

        try {
          httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
          httpRequest.send(null);
          if (httpRequest.status == 200) {
           alert(httpRequest.getAllResponseHeaders());
           alert(httpRequest.responseXML.documentElement);
          } else {
             alert("ERROR: "+ httpRequest.status);
          }
         } catch (ex) {
           alert(ex);
         }

        viele Grüße

        Axel

        1. Hallo,

          httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
          try {
            httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
            httpRequest.send(null);
            if (httpRequest.status == 200) {
             alert(httpRequest.getAllResponseHeaders());
             alert(httpRequest.responseXML.documentElement);
            } else {
               alert("ERROR: "+ httpRequest.status);
            }
          } catch (ex) {

          if (ex.description) alert(ex.description); else alert(ex);

          }

          Ergänzung:
          Solange das anfordernde Dokument, das mit dem Ajax-Code, in der Lokalen Intranetzone ist und somit die Einstellung

          Internetoptionen - Sicherheit - Stufe anpassen (Sicherheitseinstellungen) - Verschiedenes - Auf Datenquellen über Domänengrenzen hinweg zugreifen

          auf "Eingabeaufforderung" steht, zeigt der IE6.0 (alle aktuellen Patches) unter Windows 2000 SP4 (alle aktuellen Patches) das von mir im Vorpostig beschriebene Verhalten.

          Befindet sich das anfordernde Dokument in der Internet-Zone bzw. ist die o.a. Einstellung auf "Deaktivieren", dann kommt auch im IE der Fehler "Erlaubnis verweigert".

          Das gilt natürlich nur, wenn das anfordernde Dokument nicht selbst vom Host "en.wikipedia.org" angefordert wurde.

          @Olliminatore:
          Wie hast Du es geschafft, dass Dein Ajax angeblich mit FireFox problemlos funktioniert? Liegt das aufrufende Dokument auf en.wikipedia.org?

          viele Grüße

          Axel