У нас есть приложение на основе .net, размещенное на фреймах корпоративного портала SAP.
Домен портала SAP - al.xx.companyname.com . Домен сервера приложений .Net: ss.xx.companyname.com .
Теперь, когда я открываю приложение через корпоративный портал, я получаю ошибку JavaScript «Отказано в доступе». Я включил отладку сценариев в IE, а затем подключил отладчик Visual Studio к ошибке JavaScript. Я заметил ошибку из следующего кода JavaScript для установки / сброса грязных флагов.
if(top.EPCM!=null)
Понятно, что проблема связана с междоменными сценариями. То есть сервер приложений ss.xx.companyname.com пытается получить доступ к компоненту браузера корпоративного портала домена al.xx.companyname.com.
Однако этот кросс-сценарий является сценарием доверенного домена, и я хочу как-то разрешить этот кросс-сценарий. Я попытался установить основной DNS-суффикс сервера приложений. следуя приведенному ниже подходу.
- Щелкните правой кнопкой мыши по Моему компьютеру сервера приложений. (Сервер Windows 2003, кстати)
- выберите свойства - имя компьютера
- Нажмите кнопку «Изменить» и в следующем окне нажмите кнопку «Еще»
- И в текстовом поле «Основной DNS-суффикс этого компьютера» я ввел значение - al.xx.companyname.com.
Теперь, после вышеуказанных настроек, я предполагаю, что домены корпоративного портала и сервера приложений будут приниматься за al.xx.companyname.com. Однако я все еще получаю ошибку «Отказано в разрешении JavaScript» в том же коде JavaScript, упомянутом выше.
Как предлагается в ответах, я также реализовал метод document.domain.
var requireddomain = 'al.xx.companyname.com';
var text = document.domain; //returns the domain as ss.xx.companyname.com
if (text != requireddomain)
{
for (i=0; i < 2; i++)
{
dotposition = text.indexOf( "." );
text = text.substr(dotposition +1);
}
document.domain = text;
}
if(top.EPCM!=null)
С помощью приведенного выше кода объект document.domain устанавливается как companyname.com , который является общим как для корпоративного портала, так и для сервера приложений.
Тем не менее проблема с отказом в разрешении выдается в строке >> if (top.EPCM! = Null)
Эта проблема ломает мне голову последние 3 дня. Может кто-нибудь, пожалуйста, помогите мне с этим?
Цель состоит в том, чтобы разрешить междоменный сценарий между сервером приложений и корпоративным порталом, который является надежным соединением. Спасибо.
Обновление:
Интересное и разочаровывающее развитие. Я установил ssl сертификаты на моем сервере приложений. И все же ошибка отказа в разрешении выдается.
- Домен портала: al.xx.companyname.com
- домен приложения: ss.xx.companyname.com
Я пытался установить для свойства document.domain 2 подуровня вниз, т.е. для companyname.com.
Но все равно возникает ошибка «Отказано в доступе».
Полагаю, настройка document.domain будет работать, только если домен приложения является подмножеством домена портала. т.е.
- домен портала: al.xx.companyname.com
- Домен приложения: ss.al.xx.companyname.com.
В приведенном выше случае я могу просто уменьшить домен приложения на один подуровень (до al.xx.companyname.com). Тогда, думаю, это сработает.
Однако в моем случае серверы портала и приложений являются двумя разветвленными поддоменами одного и того же companyname.com, и поэтому кросс-скриптинг по-прежнему запрещен.
Любые предложения о том, как поступить?