Организация взаимодействия между клиентом и сервером посредством XMLHttp имеет несомненное преимущество перед техникой скрытых фреймов. Программный код при этом намного проще, а логика испол¬нения гораздо очевиднее, чем в случае многочисленных функций обрат¬ного вызова при использовании скрытых фреймов. Применение XMLHttp открывает доступ к заголовкам ответа и кодам состояния HTTP, что да¬ет возможность определить, насколько успешно был выполнен запрос.
Недостатком, по сравнению с техникой скрытых фреймов, является принципиальная невозможность отслеживания броузером истории вызовов страниц. Действия кнопок «Вперед» и «Назад» не в состоянии повторно воспроизводить запросы, выполняемые через XMLHttp, вслед¬ствие чего пользователю от этих кнопок нет никакого толка. Вот поче¬му во многих приложениях на базе технологии Ajax XMLHttp приме¬няется совместно со скрытыми фреймами.
Еще один недостаток, который проявляется только в реализации Inte net Explorer, заключается в зависимости от элементов управления Act' veX. Если пользователь задал для страницы определенную зону безопа ности, которая не допускает применение элементов ActiveX, то веб-пр ложение окажется не в состоянии работать с объектом XMLHttp. В это случае можно по умолчанию использовать технику скрытых фреймов
Дополнительные соображения
Независимо от того, что вы выберете: скрытые фреймы или объе XMLHttp, есть несколько моментов, которые надо учитывать, разра тывая приложения на базе технологии Ajax. Расширение роли Jav Script в царстве серверных технологий не только дает разработчи значительную власть, но и таит в себе ряд опасностей, что, без сомн ния, требует от разработчика бдительности и осторожности.
Политика одного источника
Производители веб-броузеров стремятся максимально обезопасить чтобы не позволить злоумышленникам нанести ущерб компьютер пользователей. Самое существенное ограничение в парадигме Ja-Script называется политикой одного источника (same origin polic которая определяет, с какими серверами допускается взаимодейств
Под источником, подразумевается домен, например www.wrox.co доступ к которому осуществляется через единственный протокол, ~ ще всего через HTTP. Политика одного источника заключается в то что любая страница, загруженная из некоторого источника, им право обращаться, скачивать и взаимодействовать (посредством Ja Script) только с ресурсами с этого же самого источника. Это не меш работать методике скрытых фреймов, когда оба фрейма загруж страницы из одного и того же источника, и делает возможным раб JavaScript. Но если вы попытаетесь загрузить во фрейм страницу другого источника, то не сможете взаимодействовать с ней или пользовать функциональные возможности сценариев, заключен в ней. Цель такого ограничения - не дать возможность недобросов ным программистам выкрасть информацию с вашего компьютера.
Политика одного источника оказывает влияние и на то, как работ XMLHttp. Вы не сможете получить с помощью XMLHttp доступ к произв ному ресурсу, если он не принадлежит к тому же самому источн что и страница, в составе которой изначально был получен прогр ный код этого сценария JavaScript. Это означает, что по умолчанию не сможете указать в методе open() URL, начинающийся с http:/ а только абсолютные или относительные адреса в том же самом до не. Для того чтобы организовать доступ к другому источнику, при, ся создать на стороне сервера доверенный сценарий (прокси), котор обслужит все необходимые вам взаимодействия (рис. 2.4).
В схеме с прокси броузер выполняет запрос к веб-серверу. Веб-сервер соединяется с другим сервером, расположенным за пределами домена, и запрашивает необходимую для запроса информацию. Когда ваш веб¬сервер примет ответ, он перенаправит его обратно броузеру. В резуль¬тате получается непрерывная передача внешних данных. Доверитель¬ные сценарии на стороне сервера (прокси) мы рассмотрим позже.
В Internet Explorer отсутствует механизм обеспечения политики одного источника. Вместо этого он реализует схему зон безопасности, посред¬ством которых определяет, к каким ресурсам можно обращаться, а к ка¬ким нет. Правила обеспечения безопасности для страниц из зоны «Ин¬тернет» практически совпадают с правилами политики одного источ¬ника, тогда как для страниц из зоны «Надежные узлы» эти ограничения могут быть сняты.
юление кэшированием
При необходимости иметь дело с многократными обращениями к од¬ной и той же странице приходится побеспокоиться о механизме кэши¬рования в броузере. Для тех, кто не знает: броузеры стремятся кэши-ровать некоторые ресурсы, чтобы увеличить скорость повторной за¬грузки страниц. Этот механизм может дать гигантский прирост скоро¬сти для работы с часто посещаемыми сайтами, но может вызвать проблемы при работе с часто модифицируемыми страницами. Приме¬няя технологию Ajax для выполнения запросов, надо понимать, что механизм кэширования может стать источником многих трудностей.
Поэтому лучше всего отключить кэширование любых данных,1 посы¬лаемых от сервера к броузеру. Это можно сделать с помощью заголов¬ка Cache-Control:
Cache-Control: no-cache
Это не всегда обязательно делать для всех данных - можно сделать только . для асинхронных запросов, выполняемых объектом XMLHttp. - Примеч. на¬уч. ред.
Этот заголовок сообщит броузеру, что он не должен кэшировать ные, пришедшие с данного адреса. Теперь броузер всегда будет щаться на сервер за новой версией данных.