Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] AJAX und https

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] AJAX und https

    Moin Leute,

    folgenden Code:

    PHP-Code:
    var check null;
        
        function 
    checkuser() {
            var 
    username document.getElementById("reg_username").value;
            if (
    username.length >= 6) {
                if (
    check == null) {
                    
    check = new XMLHttpRequest();
                }
                
    check.open("GET","https://...de/check_user.php?username=" username,true);
                
    check.send(null);
                
    check.onreadystatechange ergebnis;
            }
            else
                
    document.getElementById('reg_check_username').innerHTML "zu kurz";
        }
        
        function 
    ergebnis() {
            if (
    check.readyState == 4) {
                
    alert(check.responseText);
                if (
    check.status == 200) {
                    var 
    antwort check.responseText;
                    if (
    antwort == "OK")
                        
    document.getElementById("reg_check_username").innerHTML "OK";
                    else
                        
    document.getElementById("reg_check_username").innerHTML "schon vorhanden";
                    
                }
            }
        } 
    --- https://... ist mit absicht unkenntlich gemacht!

    Wenn ich check_user.php?username=test aufrufe, erhalte ich auch eine entsprechende Ausgabe.

    Doch das Request über https sagt mir das ein Status von 0 zurück kommt.
    Gerade schon ne gute Stunde Google befragt, doch nicht wirklich schlauer geworden. Gibt es ein Workaround oder eine simple Lösung für mein Problem?
    Look at This!
    Digital-Duty.DE
    Für Syntax-Fehler übernehme ich keine Haftung!


  • #2
    Ruf die URL doch mal direkt auf.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Die Seite auf der dieses Snippet ausgeführt wird, ist die auch https?

      Wenn nicht, dann schlägt hier einfach die Same Origin Policy zu:
      https://developer.mozilla.org/en/Sam...for_JavaScript
      Create your own quiz show.

      Kommentar


      • #4
        @nikosch: Dann erhalte ich eine normale Ausgabe "OK".So wie es auch sein soll.

        @agrajag: Beide Seiten sind in dem https Verzeichnis.
        Look at This!
        Digital-Duty.DE
        Für Syntax-Fehler übernehme ich keine Haftung!

        Kommentar


        • #5
          Ist das in allen Browsern der Fall, oder nur in einem bestimmten?

          Was sagt bspw. das Net-Panel von Firebug zu den einzelnen Requests?

          Kommentar


          • #6
            Das problem ist halt, dass durch das XMLHttprequest auf http und nicht https zuzugreifen. Genau da liegt denke ich der Hund begraben.
            Look at This!
            Digital-Duty.DE
            Für Syntax-Fehler übernehme ich keine Haftung!

            Kommentar


            • #7
              Zitat von Tholi Beitrag anzeigen
              Genau da liegt denke ich der Hund begraben.
              Schlecht für Fiffi - aber wenn ich explizite Rückfragen stelle, die helfen könnten, das Problem weiter einzugrenzen, dann erwarte ich eigentlich Antworten auf diese Fragen, und keine Berichterstattung von einer Hundebeerdigung ...


              Wenn du alleine nicht weiter kommst mit der Problemanalyse, dann stelle bitte ein Online-Beispiel bereit. Das kann gerne anonymisiert sein, wenn die Daten „geheim“ bleiben sollen.

              Kommentar


              • #8
                Was ich eben schon versucht habe zu sagen ist, dass die Request-URL nicht ganz richtig ist. Denn alles stimmt bis auf das, dass Request-URL das HTTP statt HTTPS nimmt. Und ich halt denke dass es damit zusammen hängen könnte das, dass XMlHttpRequest damit nicht klar kommt. (Heißt ja auch nicht XMLHttpsRequest).
                In anderen Browsern sieht es genauso aus. Getestet mit IE und Opera.

                Im Firefox ist der Typ: text/html (NS_ERROR_DOM_BAD_URI) und die URL beginnt mit
                http://... statt https:// - Bei relativer Adressierung
                bei absoluter Addressierung stimmt die URL, dennoch bleibt der Typ des Request auf text/html (NS_ERROR_DOM_BAD_URI)
                Look at This!
                Digital-Duty.DE
                Für Syntax-Fehler übernehme ich keine Haftung!

                Kommentar


                • #9
                  First, there is no such thing as an "AJAX request". What is referred to
                  by the AJAX (commercial) buzzword now is still merely a well-known XML HTTP
                  request, i.e. a HTTP request initiated through a host object, implementing
                  an interface specified in or provided by the MSXML API, and the evaluation
                  of the corresponsing HTTP response through it. Hence the name of the MSXML
                  interface, IXMLHTTPRequest, and the host object that implements it.

                  Second, HTTPS is not another protocol, it is merely HTTP over an SSL/TLS-
                  encrypted connection. Since that encryption works transparent to the user
                  agent and so to the object described above, it should be entirely possible
                  to issue an HTTP request over that connection using that object, too, the
                  proper protocol part of the request URI ("https:") provided.
                  via Google: https ajax
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    PHP-Code:
                    function checkuser() {
                            var 
                    username document.getElementById("reg_username").value;
                            if (
                    username.length >= 6) {
                                if (
                    check == null) {
                                    
                    check = new XMLHttpRequest();
                                }
                                
                    check.open("GET","https:/.de/check_user.php?username=" username,true);
                                
                    check.send(null);
                                if (
                    check.status == 200) {
                                    var 
                    antwort check.responseText;
                                    if (
                    antwort == "OK")
                                        
                    document.getElementById("reg_check_username").innerHTML "OK";
                                    else
                                        
                    document.getElementById("reg_check_username").innerHTML "schon vorhanden";
                                    
                                }
                            }
                            else
                                
                    document.getElementById('reg_check_username').innerHTML "zu kurz";
                        } 
                    Hatte gerade noch einen Einfall. hab das readystatechange heraus genommen. Nun bleibt nur das Problem, dass das Script nur dann ordentlich läuft, wenn ich vor dem if (check.status == 200) ein alert mache.

                    Stelle ich allerdings das Request-Parameter auf Async = false, dann läuft es ohne weiteres. Hakt allerdings.

                    Das Request welches ich zurück bekomme (Async = true): NS_BINDING_ABORTED
                    Im IE erhalte ich als Fehlerzeile:
                    PHP-Code:
                    check.open("GET","https://.de/check_user.php?username=" username,true); 

                    Habe ich da etwas übersehen?

                    Nachtrag:
                    hatte vergessen für Async = true, dass readystatechange wieder einzufügen. -.-
                    Nun läuft das alles, danke.
                    Look at This!
                    Digital-Duty.DE
                    Für Syntax-Fehler übernehme ich keine Haftung!

                    Kommentar

                    Lädt...
                    X