 | Уровень сложности: средний Тайлер Андерсон, независимый автор, Stexar Corp.
10.07.2007 Для работы с Firefox XForms имеет встроенную функцию безопасности, которая запрещает пользователям проводить междоменную загрузку и отправку экземпляров данных. Однако иногда вам пригодится возможность отключить эту функцию для определенных Web-сайтов. Данный статья расскажет, как это сделать.
Прежде, чем вы начнете: замечания по этой статье
Эта статья охватывает отдельную тему. Для дополнительной информации по XForms читайте цикл из трех статей Введение в XForms.
Пример XForms, описанный в данном совете, протестирован и работает с браузером Firefox 1.5 (с установленным расширением XForms). Раздел загрузка содержит XHTML-файл для Firefox.
Экземпляр данных
Вот экземпляр документа, который вы будете использовать в данной статье для тестирования работы XForms с Firefox (листинг 1).
Листинг 1. Экземпляр документа
<DataElement xmlns="">
<FirstName />
<LastName />
<Special />
</DataElement>
|
Как мы можем видеть, в форме имеется три основных элемента, для которых нам потребуются экземпляры данных. После чего форма объединит для вас все имена вместе.
XForm
Вы создадите форму XForm, показанную в листинге 2 данной статьи. Части кода, которые вызовут ошибку согласно стандартной настройке в Firefox, выделены жирным шрифтом.
Листинг 2. Междоменные нарушения
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<title>Enabling cross-domain submissions in Firefox</title>
<xf:model id="nameConcat">
<xf:instance src=http://xaxxeon.com/auctions.xml/>
<xf:submission id="sub"
action="http://xformstest.org/cgi-bin/showinstance.sh"
method="post"/>
<xf:send submission="sub" ev:event="xforms-ready"/>
</xf:model>
</head>
<body>
Auto-submission.
</body>
</html>
|
Мы можем видеть, что источником экземпляра данных является иностранный Web-сайт. Вы не захотите, чтобы сайт, который вы посещаете, делал это по умолчанию, так как не можете знать, что посылает иностранный Web-сайт в форму, или что он делает с полученными данными.
Нарушение
Загрузка этой формы в Firefox провоцирует нарушение, как можно видеть на рисунке 1. Убедитесь, что вы загружаете ее на свой Web-сервер - например, на http://localhost/xforms/crossDomain.xhtml.
Рисунок 1. Обнаруженное нарушение
Так что с этим делать? К счастью, в Firefox есть простой способ для разрешения междоменной загрузки и отправки, очень похожий на разрешение всплывающих окон только для некоторых Web-сайтов.
Разрешение междоменной загрузки и отправки в Firefox
Итак, вы хотите разрешить междоменную загрузку и отправку. Выполните следующие шаги:
- Перейдите к Tools > Options
- Нажмите ссылку Content
- Отметьте кнопку-флажок Allow XForms to access other domains
- Нажмите на кнопку Allowed Sites за этой кнопкой-флажком
- Теперь просто введите Web-сайт (в данном случае localhost, так как XForm расположена на localhost), отметьте кнопки-флажки Load и Send (или только Load), затем нажмите Add
Вот и все! Теперь, когда вы загрузите XForm, вы должны увидеть, что появляется экземпляр данных, как показано в листинге 3.
Листинг 3. Успех!
Instance Data
<?xml version="1.0" encoding="UTF-8"?>
<auctionItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<auctionItem itemID="2">
<purchaseDate>2006-09-18</purchaseDate>
<auctionLength>600</auctionLength>
<purchasePrice>10</purchasePrice>
<description>Vintage hair dryer</description>
<estimatedValue>N/A</estimatedValue>
</auctionItem>
<auctionItem itemID="5">
<purchaseDate>2006-09-18</purchaseDate>
<auctionLength>300</auctionLength>
<purchasePrice>5</purchasePrice>
<description>Box Lot</description>
<estimatedValue>N/A</estimatedValue>
</auctionItem>
</auctionItems>
|
Проделав эти простые изменения настроек в Firefox, вы теперь можете проводить междоменную отправку и загрузку XForms.
Заключение
Данная статья показала функцию безопасности, выполненную в XForms с Firefox, и способ отмены этой функции в Firefox, отменяющий требования безопасности для некоторых доменов (адресов Web-сайтов). Теперь подобные проблемы не должны мешать вашей разработке с помощью XForms.
Загрузка | Описание | Имя | Размер | Метод загрузки |
|---|
| пример междоменной пересылки данных в XForms | crossdomain_source.zip | 1KB | HTTP |
|---|
Ресурсы Научиться
Получить продукты и технологии
-
Получите MozzIE, элемент управления с открытым исходным кодом, который позволяет вам визуализировать XForms в IE.
Обсудить
Об авторе  | |  | Тайлер Андерсон (Tyler Anderson) получил степень бакалавра по компьютерным наукам в Brigham Young University в 2004 и степень магистра по компьютерной технике в декабре 2005 тоже в Brigham Young University. Сейчас он работает инженером в фирме Stexar Corp., расположенной в Beaverton, Ore. |
Выскажите мнение об этой странице
|  |