Bloqueo de contenido ActiveX en WEB

He realizado una web y he utilizado este código, para visualizar un RSS de noticias:
http://www.desarrolloweb.com/articulos/lector-rss-con-javascript.html
El problema que tengo es que utiliza ActiveX, en local no tengo problema de visualización en IE7 o IE6 pero cuando lo subo al servidor, no me carga dicho rss, el problema lo he solucionado, colocando la url de la web en mis sitios de confianza y habilitando ActiveX en mi explorador.
Pero yo no quiero que cada usuario que quiera ver dicho contenido tenga que andar haciendo esos pasos, por ello querría saber si existe alguna forma de que tragué directamente con dicho código sin que el usuario tenga que hacer filigranas...,
Como apunte a mayores le he hecho un añadido, ya que dicho script solo funciona en IE, para que detectara el explorador, si es firefox carga el archivo en el propio servidor, digo esto por que con firefox me funciona OK, la posibilidad de incluir PHP o ASP O JSP para realizar esto de momento esta totalmente descartada.
Espero que me puedas ayudar ya que estoy un poco estresada con este tema, cualquier ayuda para solucionar esto es poca, ya que se me echan encima los plazos gracias y un saludo
1

1 Respuesta

62.050 pts. Ingeniero en Informática
Me temo que la configuración de seguridad de Internet Explorer no se puede evitar si se usa Javascript para leer contenido de otro sitio mediante RSS. La solución en estos casos es siempre realizar esa lectura en el servidor e incluir el resultado en la página (mediante las teconologías que descartas)
Entonces por lo que me cuentas el problema que estoy teniendo es por que intento leer un archivo.xml exterior con javascript..., te pongo el código, ya que mi pregunta va encaminada, ¿a qué si todos los archivos que leo con dicho código están en el propio servidor mis problemas con dicho bloqueo se van a acabar?, ya que la opción del RSS podría optar por incluir el código que ceden algunos periódicos digitales como el País, te adjunto el código también al final para que veas si voy a tener algún problem en el servidor, ya que las pruebas de dicha web no las llevo yo, por tanto cuantos menos intentos fallidos tenga mejor¡:
Código en index.html:
<script language="javascript" src="scripts/rss.js"></script>
<script language="javascript">
   window.onload = function()
   {
   var marc= null;
   marc=navegador(); 
   if(marc=="ie"){
    ReadRSS('http://abc.canal-si.com/rss/rss_abc.xml','articulos_noticias');
    ReadRSS('xml/actualidad.xml','articulos_actualidad');
    }
   if(marc=="firefox15"){
    ReadRSS('xml/cnn_tech_rss.xml','articulos_noticias');
    ReadRSS('xml/actualidad.xml','articulos_actualidad');
    } 
   } 
</script>
Codigo rss.js:
var mydate=new Date();
   var year=mydate.getYear();
   if (year < 1000)
    year+=1900;
   var day=mydate.getDay();
   var month=mydate.getMonth()+1;
   if (month<10)
    month="0"+month;
   var daym=mydate.getDate();
   if (daym<10)
    daym="0"+daym;
function navegador() {
     var ie = document.all != undefined;
     var opera = window.opera != undefined;
     if (opera) return "opera";
     if (ie) return "ie";
     if ((window)&&(window.netscape)&&(window.netscape.security)) {
       if (window.XML) {
      return "firefox15";
       }
       else return "firefox10";
     }
     return "ie";      // Si no sabemos que navegador es, devolvemos ie.
      }
function Replace(totalValue,oldValue,newValue)
{
 while(totalValue.indexOf(oldValue) > -1)
  totalValue=totalValue.replace(oldValue,newValue);
   return totalValue;
}
/*Obtener XML Nodo
    (Parámetros) tagName: 'XML Elemento' nodo: 'Elemento de la fila número*/
function getNode(TagName, node)
{
 var currentNode = (node == null) ? xmlDoc.getElementsByTagName(TagName) :
     items[node].getElementsByTagName(TagName);
 if(currentNode.length > 0)
  return currentNode[0].firstChild.nodeValue;
}
/*Carga de objetos en XML
    (Parámetros) rssFeed: 'Archivo RSS' Cuerpo: 'Capa de RSS Órgano' Titulo: 'Capa de RSS el titulo' */
function ReadRSS(rssFeed, Body, Title)
{
 rssTitle = document.getElementById(Title); 
 rssBody = document.getElementById(Body);
 try
 {
  if (document.all)
  {
   var errorHappendHere = "Verifique la configuración de seguridad del navegador";
   xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  }
  else
  {
   var errorHappendHere = "Firefox no puede leer xml en remoto, por favor, copie el archivo xml en el servidor";
   xmlDoc = document.implementation.createDocument("","",null);
  }
  xmlDoc.async=false;
  xmlDoc.load(rssFeed);
  items=xmlDoc.getElementsByTagName('item');
  SetRSSTemplates();
 }
 catch(e)
 {
  rssTitle.innerHTML = 'Error occured';
  rssBody.innerHTML = 'Thrown Error:'+e.message+"<br/>Note: "+errorHappendHere;
 }
}
/* Conjunto de plantillas HTML
Aspecto de la alimentación fácil personalizable*/
function SetRSSTemplates()
{
 if (rssBody)
 {
  var buffer = "";
  for(var i=0; i< items.length; i++)
  {
   var output = (document.all) ? Replace(rssBody.innerHTML,"(::Link::)",getNode('link',i))
            : Replace(rssBody.innerHTML,"%28::Link::%29",getNode('link',i));
   output = Replace(output,"(::Title::)",getNode('title',i));
   output = Replace(output,"(::Pubdate::)",getNode('pubDate',i));
   output = Replace(output,"(::Description::)",getNode('description',i));
   output = Replace(output,"(::Imagen::)",getNode('imagen',i));
   buffer+=output;
  }
  rssBody.innerHTML = buffer;
 }
}
Buscando el otro día una solución localice varias páginas de periódicos digitales como el PAÍS, que te permiten incluir sus RSS:
<script language="javascript" src="http://www.elpais.com/rss/feed.html?feedId=1005&version=4&n=3&usrId=2fca89aef2c792cb67c316a669ffe591" type="text/javascript"></script>
<h2 class="titulo_feed_elpais"><a href="http://www.elpais.com" target="_blank" alt="Noticias ELPAIS.com" title="Noticias ELPAIS.com">ELPAIS.com</a> | <a href="http://www.elpais.com/tecnologia/" alt="Noticias de Sección Tecnología" title="Noticias de Sección Tecnología" target="_blank">Noticias de Sección Tecnología</a></h2>
<script language="javascript" type="text/javascript" src="http://www.elpais.com/rss/js/elptesw.js.php"></script>
A mayores te mandan también los estilos pero bueno esos ya se los aplico yo a mimanera, lo que me importa es si va estar bloqueado por el IE, ya que el resto de lecturas de xml las voy hacer en el propio servidor, así de esta manera no tendría que pasarlo todo a jsp.
Gracias de todas formas por ayudar a esta programadora en apuros¡ Un saludo¡
Si los xml están en el propio servidor no vas a tener problemas. Internet Explorer entenderá que estás pidiendo páginas del mismo servidor, aunque sea por javascript, y lo verá como normal. Si te fijas en las opciones de seguridad de IE siempre habla de "entre dominios", en tu caso es intentar descargar contenido de otros servidores desde javascript en el explorador.
OK¡, muchas gracias, la verdad es que me has dado solución a un asunto que me traía de calle, ya te contare que tal fue un saludo¡

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas