2011-01-11 4 views
0

Hallo Ich habe eine Website html mit Java-Skript, die Website in Apache Tomcat hochgeladen, die Website angenommen, um einen anderen Server zu kontaktieren und json Daten zurück abrufen, dies geschieht nicht die Paketracing zeigt, dass der TCP-Handshake durch einen FIN-Status beendet wird. Das Paket, das gesendet wurde, bevor der FIN-Status eine Prüfsumme hat, ist falsch. Ich bin mir nicht sicher, wie ich das Problem beheben soll. Denken Sie, dass die Checksumme falsch ist, um den Handshake zu beenden? und hwo, um das zu vermeiden? Folgendes ist mein Ajax Jquery Code Hinweis: Apache Server und der andere Server sind in der gleichen Domäne. Vielen Dank im Voraus LStcp Handshake durch FIN/JSON Daten nicht abgerufen

$(document).ready(function() { 
var home_add='http://myhome.net:3300/gateway'; 
$('#handshake').click(function(){ 
    alert(" sending json data"); 
         $.ajax({     /* start ajax function to send data */ 
          url:home_add, 
          type:'POST', 
          datatype:'json', 
          contanttype:'text/json', 
          async: false, 
          error:function(){ alert("handshake didn't go through")}, /* call disconnect function */ 
          data:{ 
          "supportedConnectionTypes": "long-polling", 
          "channel": "/meta/handshake", 
          "version": "1:0" 
          }, 
          success:function(data){ 
          $("p").append(data+"<br/>"); 
          alert("sucessful handshake") 
          }      
          }) 

          }) 
}) 
+0

'contanttype' ist falsch geschrieben, aber es würde nichts mit dem Inhaltstyp der Antwort zu tun, wenn enthalten: http : //api.jquery.com/jQuery.ajax/ – PleaseStand

Antwort

1

Sie scheinen die same-origin policy Missverständnis zu sein. Die Same Origin Policy von XMLHttpRequest verwendet, die Grundlage für die jQuery-AJAX-Funktionalität ist:

  • Die beiden Host-Namen müssen genau gleich sein (nicht nur Teil einer höheren Level-Domain).
    Beispiel: Eine Webseite von careers.stackoverflow.com kann auf dieselbe Domäne zugreifen, jedoch nicht auf beta.careers.stackoverflow.com, stackoverflow.com oder foo.stackoverflow.com.

  • Die beiden Protokolle müssen genau gleich sein (http/https).
    Beispiel: Eine Webseite von http://stackoverflow.com kann nicht auf https://stackoverflow.com zugreifen und umgekehrt.

  • Die zwei Portnummern müssen genau gleich sein (außer im Internet Explorer).
    Beispiel: Eine Webseite von http://stackoverflow.com kann in Firefox, Chrome, Safari oder Opera nicht auf http://stackoverflow.com:8080 und umgekehrt zugreifen.

werden Sie haben eine von dieser zu tun:

  • Verwenden Sie die Access-Control-Allow-Origin HTTP-Header in AJAX-Antworten, mit dem offensichtlichen Nachteile auszuschließen Browsern wie IE und älterer Versionen des anderen, das tut unterstützt es nicht

  • Verwenden JSONP, die is supported by jQuery wenn auch nicht für synchrone Anforderungen (die Sie sollten auf jeden Fall vermeiden, weil sie den Browser hängen kann)

  • Proxy HTTP-Anforderungen vom Server Ihrer Webseite wird

    auf den anderen Server dient auf
+0

Hallo Dank für deine Antwort, aber wenn das das Problem ist, denkst du, dass es so früh wie ein tcp Handshake-Setup erkannt wird, das passenderweise einen Port für die Verbindung öffnet und dann SYN sendet und ACK zwischen dem Client und dem Server, aber in meinem Fall wird der Handshake hier mit FIN State beendet. Ihr Feedback ist willkommen Vielen Dank :) – user550751

Verwandte Themen