Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Не открывается страница xml


Автор: ReductCasper 12.10.2009, 14:09
Всем добрый день. У меня большая проблема. Когда я открываю страницу xsl через window.open(...) (главное что б в новом окне), IE8 ругается и пишет что не будет отображать страницу из-за того что она не проходит через XSS фильтр встроенный в IE8. А именно: "IE изменил эту страницу для предотвращения запуска сценариев между узлами". Что можно сделать?

Автор: DeadLine 12.10.2009, 14:29
ReductCasper, если до IE8 все работало,то можно прикинуться 7 версией(например) или другим браузером
Код

<meta http-equiv="X-UA-Compatible" content="IE=8" />


Здесь, content – обозначает режим, в котором будет отображаться страница. Основные значения content следущие:
«IE=7» — включает режим Strict в котором рендерятся все страницы;
«IE=EmulateIE7» — включает режим совместимости с IE7, в котором в зависимости от DOCTYPE будет применяться либо стандартный для IE7 режим рендеринга (Strict), либо quirks-режим (Quirks);
«IE=EmulateIE8» — страница форсируется в режим «IE8 Standards» вне зависимости от того, включен ли режим совместимости «Compatibility View» в браузере пользователя, а quirks-страницы отображаются в Quirks-режиме.
«IE=8» — включается режим максимального соответствия стандартам «IE8 Standards».
Кроме того, значения content не ограничиваются перечисленными режимами. Так можно указать значения для любых других браузеров:
Код

<meta http-equiv="X-UA-Compatible" content="FF=3" />

Автор: ReductCasper 12.10.2009, 14:42
Пробовал все это, не помогает. Я не выдал всю информацию: в FF работает, IE7 тоже, в IE8 работает только если страница открываеться не в новом окне, а в этом-же. Также пробовал: <meta name="X-XSS-Protection" content="0">, но тоже ничего  smile . Я думаю из-за того что написать совместимость с IE7, IE8 все равно будет использовать разработанный фильтр защиты для проверки, но я даже не знаю на каком этапе он срабатывает. В окне показывает только знак # и сверху окошко IE что XSS... Исходный код страницы:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="abc.xsl"?>

<viewpay>
......
.......
</viewpay>

Автор: diadiavova 12.10.2009, 15:12
Политика безопасности ие становится всё жёстче с каждым обновлением и (я верю) настанет когда-нибуть наконец тот день, когда сей продукт вообще откажется отображать что бы то ни было из соображений безопасности. smile 

пардон муа за оффтопик

Автор: DeadLine 12.10.2009, 15:51
ReductCasper, если можно,то скинь исходник на deadline(at)vingrad(dot)ru

Автор: ReductCasper 12.10.2009, 16:46
Нет возможности скинуть исходники, конфиденциальность. Но если в общих чертах, то: есть главна страница, в ней текст:
<form action="pay" method="post" onsubmit="return view(this);">
  Здесь распольжены разные поля
</form>

function view(ref) {
    var url=ref.action+"?";
    for(var i=0;i<ref.elements.length;i++)
           if(ref.elements[i].type=="hidden")
                url=url+"&"+ref.elements[i].name+"="+buildURL(ref.elements[i].value);
    window.open(url,'print','top=10, left=20, width=650, height=653, titlebar=yes, toolbar=yes, status=yes');
    return false;
}

Код сервлета viewpay просто собирает все это и отдает на растерзание IE как я писал:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="abc.xsl"?>

<viewpay>
    Здесь поля собранные сервлетом из главной страницы
.......
</viewpay>

Автор: diadiavova 12.10.2009, 16:52
ReductCasper, я думаю, что твоя проблема именно в window.open. Ты пытаешься таким образом открыть страницу на другом узле и ИЕ не даёт это сделать. Так что тут дело видимо даже не в XML (ИМХО) 

Автор: diadiavova 13.10.2009, 09:18
Кстати, я что-то подумал, почему бы не сделать так: грузить страницу с того же узла, что и сам документ, а уже с неё выполнять редирект, то есть в страничку вставить такой метатег
Код

<meta http-equiv="refresh" content="0; url=http://www.pageaddress.com">

Или можно из скрипта
Код

document.location.href = "http://www.pageaddress.com";

Автор: ReductCasper 13.10.2009, 09:25
1.Даже если бы так и можно было сделать, то терялось бы содержимое главной страницы.
2.Это не зависит от window.open или <form target="_blank", но да это из-за того что страница открываеться в новом окне, я писал об этом.
3.Я думаю есть какая-то золотая середина, ведь и то и другое - продук microsoft
Но я не знаю какая

Автор: diadiavova 13.10.2009, 09:33
Цитата(ReductCasper @  13.10.2009,  10:25 Найти цитируемый пост)
1.Даже если бы так и можно было сделать, то терялось бы содержимое главной страницы.
Что значит "терялось бы содержание главной страницы"? И почему так сделать нельзя?
Цитата(ReductCasper @  13.10.2009,  10:25 Найти цитируемый пост)
Это не зависит от window.open или <form target="_blank"
Но судя по сообщению
Цитата(ReductCasper @  12.10.2009,  15:09 Найти цитируемый пост)
IE изменил эту страницу для предотвращения запуска сценариев между узлами
проблема именно в том, что ты пытаешься открыть страницу с другого узла, поэтому я и предлагаю открывать с того же узла и сразу же переходить куда надо. И честно говоря мне не понятно, почему не попробовать так сделать, не получится - думать дальше.

Автор: diadiavova 13.10.2009, 09:55
Вот пример
Основная страница
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body>
<input type="button"  value="Open Google" onclick="window.open('Googleredir.htm');"/>
</body>
</html>


Страница Googleredir.htm(находится на том же узле)
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
<meta http-equiv="refresh" content="0; url=http://www.google.ru/">
</head>
<body>

</body>
</html>
Правда в ИЕ8 не пробовал, а ИЕ7 лишнее окно открывает smile 

Автор: ReductCasper 13.10.2009, 11:02
У меня работает то аналогично: с помощью функции view(...) открываеться ресурс https://www.example.com/viewpay?a=1&b=2...
Потом срабатывает сервлет viewpay, который берет эти параметры и возвращает xml:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="abc.xsl"?>

<viewpay>
   <a>1</a>
   <b>2</b>
</viewpay>

И после этого IE должен взять abc.xsl и подставить параметры.
Чем эта последовательность отличаеться от вашей?
На работе убивают! Помогите

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)