Кросс-сервер AJAX Call - PullRequest
       1

Кросс-сервер AJAX Call

0 голосов
/ 10 января 2011

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

Вот ситуация. У меня есть два URL-адреса, www.mysite.com и members.mysite.com. Первый сайт - на WordPress, а второй - на Codeigniter, я называю эти сайты стороной WordPress и стороной Codeigniter. Сторона codeiginter имеет страницу календаря событий, которая создается в виде модуля, поэтому все, что нужно сделать любой странице, - это включить файл и все javascript и все, что с ним связано. Что касается WordPress, мы должны включить один из этих файлов в страницу, но проблема в том, что сторона codeigniter управляется ajax, поэтому, когда она выполняет ajax-вызовы, вызовы будут кросс-серверными. Вот решения, которые я видел в Интернете с минусами в моей ситуации:

  1. jsonp - Это не поддерживает данные POST.
  2. простой прокси на стороне сервера http://devlog.info/2010/03/10/cross-domain-ajax/ - Поскольку javascript совместно используется двумя URL-адресами, мне придется создать один и тот же файл как на стороне wordpress, так и на стороне codeigniter. Это означает дублирование кода, проблемы с производительностью и тот факт, что, если пользователь находится на стороне codeigniter, запрос должен сделать дополнительный вызов страницы, чтобы получить данные.
  3. Символические ссылки - поскольку оба они находятся на одном сервере, возможно ли создать символическую ссылку на стороне WordPress? Будут ли загружены мои настройки codeigniter? У меня такое чувство, что это не сработает.
  4. iFrame - этот модуль включен, поэтому ему не хватает всех стилей, заголовков и прочего
  5. .htaccess файл - это длинный путь, но если был какой-то способ получить файл .htaccess для перенаправления вызова на другой сервер без ведома ajax, он может работать?

На данный момент я склоняюсь к # 2, потому что это единственное рабочее решение. Есть ли другие решения, которые вы, ребята, могли бы придумать? Если бы был какой-то способ передачи данных вместе с jsonp, это было бы идеально, но все сайты говорят, что невозможно передавать данные поста, а codeigniter не любит строки запросов ... на самом деле, я мог бы включить это, но это было бы вероятно, все испортить на этом этапе.

UPDATE

Итак, я последовал первой идее, и она сработала. Я нашел подобное решение в jQuery $ .ajax (), $ .post отправляет «OPTIONS» как REQUEST_METHOD в Firefox Что меня сейчас беспокоит, так это то, что они говорят, что есть некоторые кросс-браузерные проблемы. Есть мысли?

1 Ответ

2 голосов
/ 10 января 2011

Может ли установка HTTP-заголовка «Access-Control-Allow-Origin» на сайте codeigniter решить вашу проблему?Нечто подобное в вашем файле конфигурации сайта Apache может помочь:

    <Directory "/usr/lib/php-lib">
            Order allow,deny
            Allow from all
            Header set Access-Control-Allow-Origin "*"
    </Directory>

    #Instead of "*" you could restrict it to "www.mysite.com"

Или вы можете установить этот заголовок в файле .htaccess внутри вашей директории страницы

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