2013-06-13 2 views
1

Я пытаюсь создать простой сайт стиля интрасети для наших внутренних пользователей, в основном просто верхнюю панель навигации со всем нашим пользователем, стоящим перед внутренними сайтами вверху, когда они нажимают на каждый из них откроет соответствующий сайт, встроенный в страницу, поддерживая панель навигации вверху.Простой сайт интранета со встроенными страницами

Пока это только простая панель навигации, которая открывается, как каждый в новой вкладке:

<style> 
#nav { 
width: 100%; 
float: left; 
margin: -5 0 -5 -5; 
padding: 0; 
List-style: none; 
background-color: #333333; 
border-bottom: 1px solid #ccc; 
border-top: 1px solid #ccc; 
} 

#nav li { 
float: left; 
} 

#nav li a { 
     display: block; 
     padding: 4px 15px; 
     text-decoration: none; 
     font-family: Arial; 
     font-weight: none; 
     color: #FFFFFF; 
     } 

#nav li a:hover { 
     color: #333333; 
     background-color: #fffFFF; } 
</style> 

<html> 
<body> 
<ul id="nav"> 
     <li><a href="http://intranet/glpi" target="_blank">GLPI</a></li> 
     <li><a href="http://intranet/Redmine" target="_blank">Redmine</a></li> 
     <li><a href="http://intranet/sms" target="_blank">SMS gateway</a></li> 
     <li><a href="http://intranet/labelsregistry" target="_blank">Labels Registry</a></li> 
</ul> 
</body> 
</html> 

То, что я пытался до сих пор является встраивание его в качестве плавающем фрейме и Object. IFrame покажет, но без содержимого объект даже не появится!

Функция Iframe Я использую, чтобы проверить это:

<iframe id="myframe" src="http://google.com>"</iframe> 

Это просто показывает кадр, но с «Internet Explorer не может отобразить веб-страницу».

Я направляюсь в правильном направлении или это неправильное использование iFrame?

Мой HTML не самый лучший!

enter image description here

EDIT :: Сайт работает на IIS 6.0 на Windows Server 2003 SP2.

ответ

2

Вы не можете связать iframe с внешним сайтом (через домены) - попробуйте сделать другую страницу и развернуть эту страницу. Наиболее вероятной причиной для iframe не работает потому, что целевой объект (в данном случае, Google) посылает заголовок, чтобы другие сайты iframing это:

X-Frame-Options: DENY 

Многие сайты будут делать это, чтобы предотвратить общее уязвимость, известная как UI Redressing или Click Hijacking. На некоторых сайтах также будет отображаться Javascript в виде резервной меры безопасности для HTTP-заголовка.

От MDN:

HTTP-заголовка ответа X-Frame-Options можно использовать, чтобы указать, должен ли браузер разрешено отобразить страницу в <frame> или <iframe>. Сайты могут использовать это, чтобы избежать атак с помощью Clickjacking, гарантируя, что их контент не встроен в другие сайты.

Короче: да, ваш IFrame используется правильный синтаксис, однако вы можете IFrame только на сайты, которые либо на том же домене, или которые позволили использовать кадрирование при помощи тега заголовка.

+0

Вы гений. По какой-то неизвестной причине я решил протестировать его с помощью внешнего сайта, такого как Google, вместо сайта, на котором я действительно пытался добраться! Я тестировал один из внутренних сайтов и теперь работал нормально. Спасибо – mhouston100

+0

Не беспокойтесь, теперь вы знаете в следующий раз :). Удачи. – eggy

+0

** Для всех служб в интрасети, использующих одно и то же доменное имя, он работает **. Таким образом, вам нужно сделать DNS-записи поддоменов для каждого. Например, если ваша интрасеть имеет адрес 'intranet.company.local', создайте CNAME' helpdesk.company.local' для GLPI, и это будет сделано. Для всех других внешних сервисов давайте использовать APis. – Meloman

Смежные вопросы