В iframe отказано в доступе к нескольким доменам - PullRequest
4 голосов
/ 27 октября 2010

Я пытаюсь встроить OWA (Microsoft Exchange Server 2010) в веб-страницу в iframe, но на странице OWA появляется ошибка JavaScript, говорящая о том, что доступ запрещен, и тогда ни один из элементов управления в окне OWA не работает.

Мне нужно использовать OWA на веб-странице, я прочитал в форме, что кросс-домен не работает должным образом. Ошибка приходит как:

Информация о клиенте

Пользовательский агент: Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2.11) Gecko / 20101012 Firefox / 3.6.11 GTB7.1 (.NET CLR 3.5 0,30729)
Класс процессора: undefined
Платформа: Win32
Язык системы: undefined
Пользовательский язык: en-US
CookieEnabled: true

Сведения об исключении

Дата: Ср. 27 октября 2010 г. 10:17:05 GMT + 0530 (стандартное время Индии)
Сообщение: Отказано в <http://domain_2> разрешении на приобретение недвижимости HTMLIFrameElement.ownerDocument из <domain_1>.
URL: http://domain_2/owa/testuser@exch2k10.com/14.0.639.21/scripts/premium/uglobal.js
Строка: 1

стек вызовов

undefinedError()@:0 window$onerror(&quot;Permission denied for <http://domain_2> to get property HTMLIFrameElement.ownerDocument from <domain_1>.&quot;,&quot;http://domain_2/owa/testuser@exch2k10.com/14.0.639.21/scripts/premium/uglobal.js&quot;,1)@http://domain_2/owa/testuser@exch2k10.com/14.0.639.21/scripts/premium/uglobal.js:1 (domain_1>.&quot;,&quot;http://domain_2/owa/testuser@exch2k10.com/14.0.639.21/scripts/premium/uglobal.js&quot;,1%29@http://domain_2/owa/testuser@exch2k10.com/14.0.639.21/scripts/premium/uglobal.js:1) function Array$get_Length() { return this.length; } function Array$get_Item(index) { return this[index]; } function Array$get_Enumerator() { return new (Owa.Collections.ListEnumerator)(this); } function Array$remove(oItem) { var index = this.indexOf(oItem); if (index > -1) { this.splice(index, 1); } return index > -1; } function Array$removeAt(iIndex) { if (iIndex < this.length) { this.splice(iIndex, 1); return true; } return false; } function Array$add(oItem) { this.push(oItem); } function Array$clone() {

Я увидел, что ошибка возникает, когда uglobal.js, который поставляется с Exchange в iframe, пытается получить доступ к свойству parent.

Сообщение: Отказано в <http://domain_2> разрешении на получение свойства HTMLIFrameElement.ownerDocument из <domain_1>.

Есть ли другой способ использовать OWA на моей странице?

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

Это междоменная политика, ограничивающая вас. Он предназначен для предотвращения атак с использованием межсайтовых сценариев (XSS).

По сути, только страницы из одного домена, протокола и порта могут изменять содержимое друг друга.

2 голосов
/ 30 октября 2010

Я сталкивался с подобными проблемами при попытке сделать междоменные звонки.Для IE8 вы можете использовать следующий подход

var xdr = new XDomainRequest();
xdr.open("get", "http://domain2");
xdr.onload = function(){
    //your code
};
xdr.send();

Кроме того, в IE только для целей тестирования есть возможность добавить конкретный адрес (домен1 в вашем случае) в список доверенных Tools>Security>Trusted Sites>Sites и разрешить емусделать междоменные запросы, перейдя на custom level и выбрав Access data sources across domains.Пожалуйста, убедитесь, что второй используется только для тестирования.

1 голос
/ 27 октября 2010

Если решения JSONP не существует, создайте прокси на стороне сервера.

...