tcp рукопожатие прекращено из-за данных FIN / JSON не получено - PullRequest
0 голосов
/ 11 января 2011

Привет У меня есть веб-сайт 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 Ответ

1 голос
/ 12 января 2011

Вы, похоже, неправильно понимаете политику того же происхождения . Политика того же происхождения, используемая XMLHttpRequest, основой для функциональности AJAX в jQuery:

  • Два имени хоста должны быть абсолютно одинаковыми (не только частью домена более высокого уровня).
    Пример: Веб-страница из careers.stackoverflow.com может иметь доступ к одному и тому же домену, но не beta.careers.stackoverflow.com, stackoverflow.com или foo.stackoverflow.com.

  • Оба протокола должны быть одинаковыми (http / https).
    Пример: Веб-страница с http://stackoverflow.com не может получить доступ к https://stackoverflow.com и наоборот.

  • Два номера портов должны быть одинаковыми (за исключением Internet Explorer).
    Пример: Веб-страница из http://stackoverflow.com не может получить доступ к http://stackoverflow.com:8080 и наоборот в Firefox, Chrome, Safari или Opera.

Вам нужно будет выполнить одно из следующих действий:

  • Используйте HTTP-заголовок Access-Control-Allow-Origin в ответах AJAX, с очевидным недостатком исключения браузеров, таких как IE, и более старых версий других, которые его не поддерживают

  • Используйте JSONP , который поддерживается jQuery , но не для синхронных запросов (которых следует избегать, так как они могут повесить браузер)

  • Прокси-запросы HTTP с сервера, на котором ваша веб-страница передается на другой сервер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...