未检索到FIN / JSON数据而终止tcp握手

时间:2011-01-11 16:40:55

标签: javascript json jquery tcp

您好  我有一个网站html包含java脚本,网站上传到apache tomcat,网站假设联系另一台服务器并检索json数据,这不发生数据包跟踪显示tcp握手被FIN状态终止数据包发送在FIN状态校验和不正确之前,我不确定如何解决这个问题?你认为校验和错误是终止握手吗?并且要避免这种情况?以下是我的ajax jquery代码 注意:apache服务器和其他服务器都在同一个域中。 预先感谢 LS

 $(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")
                           }                    
                          })   

                          })
})

1 个答案:

答案 0 :(得分:1)

你似乎误解了same-origin policy。 XMLHttpRequest使用的同源策略是jQuery的AJAX功能的基础:

  • 这两个主机名必须完全相同(不仅仅是更高级域名的一部分)。
    示例:来自careers.stackoverflow.com的网页可以访问相同的域但不是beta.careers.stackoverflow.comstackoverflow.comfoo.stackoverflow.com

  • 两个协议必须完全相同(http / https)。
    示例:来自http://stackoverflow.com的网页无法访问https://stackoverflow.com和反之亦然。

  • 两个端口号必须完全相同(Internet Explorer除外)。
    示例: http://stackoverflow.com的网页无法访问{{1}在Firefox,Chrome,Safari或Opera中反之亦然。

您必须执行以下操作之一:

  • 在AJAX响应中使用Access-Control-Allow-Origin HTTP标头,明显的缺点是排除IE等浏览器以及其他不支持IE浏览器的旧版本

  • 使用JSONPis supported by jQuery虽然不适用于同步请求(无论如何都应避免,因为它们可以挂起浏览器)

  • 来自服务器的代理HTTP请求将您的网页提供给其他服务器