ajaxSetup выдает ошибки при использовании CDN - PullRequest
0 голосов
/ 24 августа 2011

У меня есть это утверждение в файле js в моем приложении, которое загружается в начале, чтобы проверять время ожидания сеанса каждый раз после запроса ajax.

if(window.jQuery)
{
    $.ajaxSetup({

      complete: function (xhr) {
          if (xhr.getResponseHeader('SESS_TIMEDOUT') == "1") {
          alert('Your session has timed out. Please login again!');
          window.location = '/logout';
        }
      }
    });

}

Но затем я начал помещать все свои статические файлы в CDN, и теперь я получаю сообщение об ошибке такого типа в консоли:

Uncaught TypeError: Cannot call method 'getResponseHeader' of undefined
$.ajaxSetup.completeform.js:10
c.extend.handleCompletejquery-1.4.4.min.js:143
c.extend.ajax.A.onload.A.onreadystatechange

Так что, очевидно, xhr arg не передается.

Я также заметил, что в одном из моих сценариев есть оператор, использующий функцию getScript () с URL-адресом, который раньше был «/js/script.js», но теперь является «http://static.mydomain.com/js/script.js'.» Может ли проблема между доменами быть виновник здесь?

Есть идеи, как это решить?

1 Ответ

0 голосов
/ 24 августа 2011

Если вы запрашиваете ajax-вызов в домене, отличном от того, на котором находится ваш документ, тогда «да», это может быть проблемой с междоменной безопасностью. Если ваш CDN является доменом, совершенно отличным от домена сервера, на который поступает вызов ajax, это может вызвать проблемы с тем же источником, если ваша главная HTML-страница помещена в CDN.

В этом документе описана та же политика происхождения , и существует обходной путь для различных поддоменов с общим корневым доменом. Это один из способов обойти проблему CDN, но он требует, чтобы CDN был поддоменом вашего корневого домена, а не полностью отдельным корневым доменом.

При переключении на CDN вам необходимо убедиться, что все относительные пути по-прежнему верны. getScript() можно загрузить с любого домена. Он не ограничен тем же источником, но если вы используете относительный путь и изменили корневой путь, вы должны либо убедиться, что все вещи, которые используют относительные пути, также находятся в CDN, либо переключиться на абсолютные пути.

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