Взвешивание кросс-доменных опций JavaScript - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть сценарии для интрасети, с которыми я пытаюсь перейти через домен.Я использую jQuery 1.7 и пытаюсь взвесить мои варианты.Есть 3 варианта, о которых я знаю.

  1. JSONP
  2. Настройка Access-Control-Allow-Origin в заголовке веб-сервера
  3. Запись прокси-страницы

С JSONP я ограничен запросами GET.У меня есть некоторые большие данные, которые я хотел бы опубликовать, и это невозможно с ограничениями длины URL.

Настройка Access-Control-Allow-Origin на сервере помогает для любых предварительных запросов, которые jQuery может выполнить перед выполнением.Но я во власти ограничений браузера, таких как Chrome и IE6.Я на Chrome 15 и переход с localhost на любой другой домен сразу вырвет.Я прочитал собственные диаграммы IE7 + XmlHttpReq, и я подумал, что это будет хорошим решением, поскольку я перехожу только из интрасети в интранет, но думаю, что даже не для самой последней версии Chrome.но я думаю, что это может быть слишком много впереди работы.Я подпрыгиваю между веб-службами .NET WCF, и у меня достаточно поводов для беспокойства по поводу упаковки запросов SOAP и установки типов контента.

Так что вы думаете?Есть ли какие-то соображения, по которым мне не хватает этой работы в Chrome?Я могу игнорировать все, что меньше, чем IE7.Или мне просто использовать метод прокси-страницы?

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Для того, чтобы я их использовал:

PROXY

Чтобы быть абсолютно уверенным, что вы получите то, что хотите, используйте прокси. Для мелкомасштабных вещей вы можете буквально сделать однострочную в .htaccess при перезаписи всех URL-адресов (при условии, что вы используете Apache) на внешний хост. Работает просто отлично, хотя отладка может быть немного трудной, поэтому лучше быть готовым прочитать файлы журнала на целевом сервере, так как в случае ошибки (например, 500 или аналогичной) вы получаете ошибку прокси (обычно 502) вместо этого в браузер. Единственный минус в том, что ему нужен достойный сервер, если нагрузка становится слишком большой, но простое переключение Apache на Ngnix даст вам большой импульс, так что не бойтесь его использовать.

Access-Control-Allow-Origin

Отличная вещь, но не поддерживается Интересная статья об использовании CORS

JSONP

Если вы не можете позволить себе дополнительную нагрузку на сервер, создаваемую прокси, вы можете обойти ограничение POST, разбивая запросы на части и отправляя их отдельно, но гораздо больше хлопот, чем просто прокси. Кроме того, работает довольно хорошо.

0 голосов
/ 23 ноября 2011

Существует как минимум еще одна опция - eaxyXDM .Это фреймворк, специально разработанный для реализации междоменного общения через JavaScript.

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