Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

23.10.2008 11:10 | Zloy Kak Pё$

С вами Сунава Дутта (Sunava Dutta), программный менеджер Internet Explorer. В мои обязанности входит работа с AJAX в браузере. Теперь, когда вышел Internet Explorer 8 Beta 2, я бы хотел рассказать вам о некоторых изменениях, которые претерпела реализация AJAX с момента релиза Beta 1.

В марте мы обсуждали опыт разработчиков в реализации таких сценариев AJAX, как междоменный доступ к данным со стороны клиента, локальные хранилища данных, управление состоянием. Хорошая новость состоит в том, что наша команда со времен Beta 1 усиленно работала над тем, чтобы подстроить и обновить реализацию интернет-технологий, основываясь на данных обратной связи от разработчиков (спасибо вам за ваш вклад!), а также над внедрением последних черновиков стандартов W3C, на базе которых сделана большая часть данных технологий или которые используются для их реализации. Мы работали не только над поддержкой контента, мы также добавили несколько функций для разработчиков, но о них чуть позже.

Обновления в AJAX, на которых мы решили сосредоточиться в Beta 2, касаются поддержки межплатформенности и инструментах для разработчиков, которые были бы, по их мнению, наиболее полезными. Обойдемся без лишних слов, вот они.


XDomainRequest (XDR)
Этот объект встроен в браузер, чтобы упростить и обезопасить междоменные клиентские запросы. Чтобы уменьшить вероятность случайного междоменного доступа, этот объект требует четкого подтверждения для разрешения междоменного запроса от клиентского скрипта и сервера. Кроме того, данный объект избавляет от необходимости прибегать сайтам к опасной практике внедрения стороннего скрипта прямо в mashup-страницу. Эта практика опасна тем, что она открывает третьей стороне полный доступ к DOM. К вышеупомянутому изменению следует добавить улучшенную производительность на стороне клиента, а также меньшую стоимость поддержки серверов благодаря отсутствию необходимости в использовании серверных ферм как прокси-серверов.

Во время тестирования Beta 1 к нам поступало очень много жалоб, связанных с безопасностью, из-за междоменного доступа сторонних данных через использование кроссдоменного запроса XMLHttpRequest и инфраструктуры Access Control. Со времен Beta 1 у нас был шанс поработать с другими браузерами и участниками W3C над увеличением удобства работы на стороне сервера и увеличением безопасности инфраструктуры Access Control, разработанной W3C. В результате, мы обновили XDR до полного соответствия синтаксису и директивам, описанным в параграфах Access Control, по анонимному запросу простых сторонних данных со стороны клиента. Смотреть параграф 5.1.3 в Access Control Process Model.

Обновления в XDR со времен Beta 1 позволяют теперь запрашивать данные с сервера домена, отсылая заголовок Origin с последовательным значением от источника запроса. IE8 Beta 2 вернет ответ только в том случае, если ответ сервера будет содержать Access-Control-Allow-Origin: *, при этом заголовок XDomainRequestAllowed: 1 из Beta 1 использовать запрещено. Другие изменения также включают в себя поддержку относительных путей в методе open и ограничение доступа только для HTTP и HTTPS-получателей.


Cross-document Messaging (XDM)
Cross-document Messaging (XDM) является еще одной мощной междоменной функцией, о которой я уже писал. Вместо того чтобы делать фоновый запрос к удаленной веб-службе, данный объект позволяет сайтам, использующим сторонние гаджеты или компоненты, на основе IFrame связываться напрямую с родителем без нарушения первоначальной политики того же сайта. Этот способ имеет свои преимущества, среди которых улучшенная производительность и надежность, так как разработчикам нет необходимости обращаться к обходным маневрам, которые мало того, что в разных браузерах ведут себя по-разному, но и могут иметь нежелательные побочные явления. Эта техника также избавляет от необходимости встраивать сторонний скрипт в вашу страницу, уменьшая тем самым шансы по потенциальному раскрытию ваших конфиденциальных данных (например, информации о вашем профиле в социальной сети) третьим сторонам без вашего согласия.

Обновления в Beta 2 также включают в себя переход обработчика onmessage от объекта document в объект window для обеспечения максимального соответствия с обновленным черновиком HTML 5.0.

window.attachEvent("onmessage", HandleMessage);



Мы также заменили e.URI на e.origin - последовательную форму "схема" + "хост" + "нестандартный порт". Это намного безопаснее, так как URI может обрабатывать потенциально небезопасную информацию с родительского сайта, который не нужен для принятия решения о предоставлении или непредоставлении доступа.

if (e.origin == 'http://www.contoso.com')
        {
               // process message text     
        }



В черновиках HTML 5.0 также говорится, что параметр targetOrigin для метода postMessage теперь будет обязательным параметром, а не опциональным. Это не позволит разработчиком делать ошибки, требуя четкого подтверждения целевого назначения сообщения, благодаря точному определению первоначального <URL> или группового символа <*>.

frameOther.postMessage("This is a message", "http://example.com");




DOM Storage
Сегодня страницы используют свойство document.cookie для хранения данных на локальном компьютере. Куки ограничены в возможностях тем, что сайты могут хранить только 50 пар ключей/значений для одного домена. Кроме того, программная модель cookie громоздка и требует синтаксического разбора всей строчки cookie для получения данных. В то время, как cookie полезны для отслеживания перемещений и изменений на стороне клиента для последующей передаче на сервер, IE8 предлагает подходящие альтернативы для сценариев, подразумевающих хранение данных на стороне клиенте и четкое разграничение сессий в различных вкладках. Объекты DOM Storage из HTML 5, разрабатываемом W3C, обеспечивают намного более простую модель хранения строчек данных ключ/значение. Сайты могут хранить данные до тех пор, пока открыта вкладка или пока пользователь или сайт не удалят данные.

Также в Beta 2 изменено имя постоянного атрибута globalStorage на localStorage и удалена необходимость определять домен при записи в localStorage

// Store a key-value pair.
localStorage.setItem("FirstName","Sunava");



В IE8 Beta 2 мы включили усовершенствованную поддержку обновленного события HTML 5.0 onstorage, возвращаемого в случае изменений в хранилище. Теперь, когда локальное хранилище изменено, IE8 возвращает URI. Таким образом, обработчик страниц знает, кто вызвал последнюю транзакцию в пространстве хранилища. Следует отметить, что рабочая группа HTML 5.0 включила метод clear, которого в Beta 1 не было, в черновик стандарта. По сути данный метод позволяет скриптам удалять все доступное в их хранилищах содержимое без необходимости проведения итераций через все ключи.


Состояние подключения
Свойство navigator.onLine и состояние подключен/отключен теперь также работают в Windows XP, как и в Windows Vista. Работу по реализации данной функции нельзя назвать тривиальной, так как осведомленность о подключении в Windows XP не настолько расширена, как в Windows Vista. Таким образом, это будет чрезвычайно полезно для разработчиков, которые, по нашему мнению, не должны беспокоиться о версии операционных систем. Значение состояния подключения особенно становится привлекательным при использовании совместно с атрибутом localstorage, при использовании которого в случае потери подключения к сети все данные могут быть кэшированы.


XMLHttpRequest
Появление в IE8 объекта XDomainRequest ни в коей степени не означает, что мы отказались от постоянной настройки и улучшения объекта XMLHttpRequest, который продолжает быть нашим флагманским объектом для коммуникаций с тем же доменом. После выхода Beta 1 наши усилия были направлены на исправление нескольких ошибок, связанных с надежностью, работу с группой W3C над прояснением и улучшением черновиков спецификаций, соответствию наших реализаций данным черновикам и публичным тестам W3C. Метод timeout, дебютировавший в Beta 1 ради удобства разработчиков, сейчас рассматривается для включения в спецификации XMLHttpRequest.

// Sets timeout after open to two seconds.
xhr.timeout             = 2000;




ToStaticHTML: в JSON и из JSON
Что вы делаете со строкой, возвращенной от третьей стороны с использованием XDomainRequest или Cross-document Messaging? В сегодняшнем мире с его увеличивающимся количеством скриптовых инъекций и XSS-атак, возможность обойти их с помощью безопасного парсера является желанным функцией. Как уже говорилось в статье Эрика Лоуренса (Eric Lawrence) Безопасность IE8: всесторонняя защита, метод toStaticHTML является мощнейшим способом для очистки кода вашего сайта от небезопасного контента.

//Calling:
window.toStaticHTML("This is some <b>HTML</b> with embedded script following... <script>alert('bang!');</script>!");
//will return:
This is some <b>HTML</b> with embedded script following... !



Кроме того, методы JSON.stringify и JSON.parse имеют лучшую производительность по сравнению с последовательными Javascript-преобразователями. Наша реализация основана на предложении ECMAScript 3.1 для native-обработки JSON, которое использует API json2.js от Дугласа Крокфорда (Douglas Crockford). Кроме преимуществ в производительности, JSON-парсер является гораздо более безопасной альтернативой методу eval(), который используется довольно-таки часто при реставрации объектов JSON и может позволить исполнение случайной функции скрипта.


Другие функции
AJAX Navigations претерпел минимальные изменения со времен Beta 1. На MSDN мы разместили некоторые новые примеры кода и общую информацию по данной теме в Beta 2. Усовершенствованный параллелизм подключений также претерпел небольшие изменения и вскоре удостоится отдельной статьи.


Итоги
Мы работали в рамках стандартов, чтобы улучшить удобство работы с AJAX. В будущем мы продолжим взаимодействие с членами консорциума W3C. Принятие разработчиками данных функций является для нас приоритетом, поэтому мы намерены сконцентрироваться на том, чтобы помочь сайтам перейти к интеграции данных функций. Для примеров кода набора функций AJAX, пожалуйста, обращайтесь к нашей лаборатории IE8 AJAX Beta 2.

Сунава Дутта (Sunava Dutta),
Программный менеджер Internet Explorer


Источник: http://blogs.msdn.com/ie
Перевод: Zloy Kak Pё$

Комментарии

Не в сети

Интересно, спасибо.

23.10.08 11:55
0
Не в сети

Dark_Diver, пожалуйста.

23.10.08 21:20
0
Не в сети

Могу сказать примерно то же самое ))

02.11.08 03:36
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.045 секунд (Общее время SQL: 0.027 секунд - SQL запросов: 57 - Среднее время SQL: 0.00047 секунд))
Top.Mail.Ru