InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
SubVersion y Visual Studio
Usuarios del sistema en Windows (servicios)
Encriptación con AES Rijndael - Ejemplo
TripleDES - Un ejemplo practico en C#
Templates css para web
Insertar una marca de agua en documentos PDF
Serialización: XmlSerializer y BinaryFormater
Handler para manipular imagenes
Como modificar el web.config sin reiniciar la aplicacion ASP.NET
Conversiones de tipos personalizadas (VB y C#)


La página Web que está abriendo contiene tanto elementos seguros como no seguros.

Cuando trabajamos con páginas SSL es bastante molesto encontrarse con un mensaje del navegador indicando que "La página Web que está abriendo contiene elementos seguros como no seguros. ¿Desea mostrar los elementos no seguros?"

Este mensaje además de molesto - sale siempre - resulta cuanto menos "inquietante" y puede provocar que más de un usuario salga inmediatamente de nuestro sitio Web. Algo especialmente grave si se trata de un sitio web dedicado a la venta online.

¿Como evitarlo?. Para responder a esta pregunta lo primero que debemos saber en porque se está produciendo. Este mensaje se muestra cuando dentro de un entorno SSL (protocolo https) existe alguna petición http. Es decir, en nuestra página hay elementos apuntado a una URL absoluta con protocolo http. Estos elementos pueden ser imagenes, scripts, css ...

Un ejemplo claro es cuando incluimos una pelicula flash en nuestra página, por defecto, el enlace incluye una redirección a la página de adobe para descargar el reproductor en el caso de que no lo tengamos instalado. Ese enlace es absoluto a través de http - por lo que provoca el molesto error.

Este sería un enlace a una pelicula flash tipico:

 

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

codebase="http://download.macromedia.com/.../swflash.cab#version=5,0,0,0"

width="516" height="76" id="ShockwaveFlash1">

<param name="movie" value="mipelicula.swf"/>

<param name="quality" value="high"/>

<param name="bgcolor" value="#000000"/>

</object>

Este enlace no muestra ningún error cuando estamos sobre un entorno http - tipicamente el entorno de desarrollo -, pero cuando pasamos a un entorno https - producción - muestra el mensaje debido al enlace http://download.macromedia.com/.../swflash.cab#version=5,0,0,0 que contiene.

En este caso la solucion es sencilla, bastará con quitar el enlace http la etiqueta.

 

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

width="516" height="76" id="ShockwaveFlash1">

<param name="movie" value="mipelicula.swf"/>

<param name="quality" value="high"/>

<param name="bgcolor" value="#000000"/>

</object>

Pero no siempre es tan fácil solucionar el error. Cuando no podemos o no queremos eliminar el enlace - por ejemplo un javascrit - tendremos que recurrir a otros métodos.

Por ejemplo, cuando utilizamos Google Analytics, tenemos que incluir el siguiente script en nuestra página.

	

<script src="http://www.google-analytics.com/urchin.js"

type="text/javascript"></script>

En este caso necesitaremos programar una página intermedia - que se trasmita por https - y que realice la solicitud a la dirección http y devuelva el mismo contenido. En nuestro caso, utilizamos ASP.NET por lo que nuestra página es aspx - pero la idea es válida para cualquier entorno web php, jsp, RoR ...

 

<script src="GetScript.aspx"

type="text/javascript"></script>

Y nuestra página GetScript.aspx (debemos incluir una directiva using System.Net;):

 

protected void Page_Load(object sender, EventArgs e)

{

string httpUrl = "http://www.google-analytics.com/urchin.js";

WebRequest httpRequest = WebRequest.Create(httpUrl);

WebResponse httpResponse = httpRequest.GetResponse();

System.IO.Stream webStream = httpResponse.GetResponseStream();

System.IO.StreamReader reader =

new System.IO.StreamReader(webStream );

string html = reader.ReadToEnd();

Response.Write(html);

}

En el caso de que la conexion salga a través de un servidor proxy:

 

protected void Page_Load(object sender, EventArgs e)

{

string httpUrl = "http://www.google-analytics.com/urchin.js";

WebRequest httpRequest =WebRequest.Create(httpUrl);

// En el caso de utilizar un servidor proxy

IWebProxy proxy = WebRequest.GetSystemWebProxy();

if (proxy != null && proxy.Credentials != null)

{

httpRequest.Proxy = proxy;

}

else

{

proxy = new WebProxy("<servidor proxy>:<puerto>");

NetworkCredential credenciales =

new NetworkCredential("<usuario>", "<clave>");

proxy.Credentials = credenciales;

httpRequest.Proxy = proxy;

}

WebResponse httpResponse = httpRequest.GetResponse();

System.IO.Stream webStream = httpResponse.GetResponseStream();

System.IO.StreamReader reader =

new System.IO.StreamReader(webStream);

string html = reader.ReadToEnd();

Response.Write(html);

}

Finalmente, si lo que queremos es "rizar el rizo", en lugar de utilizar una página - que entre otros inconveniente tiene que ejecuta su ciclo de vida completo - sería mejor utilizar un manejador http.

Para eso, creamos nuestro propio manejador de peticiones como se muestra a continuación.

 

<%@ WebHandler Language="C#" Class="Handler" %>

 

using System;

using System.Web;

using System.Net;

 

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context)

{

context.Response.ContentType = "text/javascript";

context.Response.Write(GetData());

}

private string GetData()

{

string httpUrl = "http://www.google-analytics.com/urchin.js";

WebRequest httpRequest = WebRequest.Create(httpUrl);

// En el caso de utilizar un servidor proxy

IWebProxy proxy = WebRequest.GetSystemWebProxy();

if (proxy != null && proxy.Credentials != null)

{

httpRequest.Proxy = proxy;

}

else

{

 

proxy = new WebProxy("<servidor proxy>:<puerto>");

NetworkCredential credenciales =

new NetworkCredential("<usuario>", "<clave>");

proxy.Credentials = credenciales;

httpRequest.Proxy = proxy;

}

WebResponse httpResponse = httpRequest.GetResponse();

System.IO.Stream webStream = httpResponse.GetResponseStream();

System.IO.StreamReader reader =

new System.IO.StreamReader(webStream);

string html = reader.ReadToEnd();

return html;

}

public bool IsReusable

{

get {

return false;

}

}

}

Luego definimos una extension de archivo - en nuestro caso jsx - , incluimos el manejador en el web.config y cambiamos el enlace de la página para que apunte a un recurso .jsx

 

<httpHandlers>

<add verb="GET" path="*.jsx" validate="false" type="Handler"/>

</httpHandlers>

	<script src="GetScript.jsx" type="text/javascript"></script>

 Saludos,


 Versión para imprimir  Foros de consulta

 
Aunque lo del httphandler sea ... por David Andrés
Respuesta recibida el [24/03/2009 07:06:04]
Aunque lo del httphandler sea algo secundario en el artículo, sin duda lo mejor... lo veo muy útil


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

La página Web que está abriendo contiene tanto elementos seguros como no seguros.
Autor: Pedro Herrarte Sánchez
Visitas: 3038 Fecha de publicación: 26/02/2009
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 106 | Comentarios: 3 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 802 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 756 | Comentarios: 3 | Archivo: Articulos
Visitas: 3167 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14541 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1489 | Comentarios: 3 | Archivo: Articulos
Visitas: 695 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2028 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certuficado de afiliacion a porvenir por ede ... [Actualidad] 5 05/02/2010
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 136 26/01/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 59 10/02/2010
necesito certificado de afiliacíon a pensiones por jelo ... [Actualidad] 0 12/03/2010
Certificado de afiliacion AFP (PENSIONES) Horizonte por Sandris ... [Actualidad] 70 30/01/2010
certificado de penciones porvenir por caro ... [Actualidad] 1 12/03/2010
vendedora por caro ... [Actualidad] 2 12/03/2010
certificado de afiliacion por jeison ... [Actualidad] 0 12/03/2010
CERTIFICADO DE AFILIACION A PROTECCION por LEIDYS ... [Actualidad] 21 11/02/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 116 28/01/2010
urgente porfabor requiero el certificado que pertenesco a esta entidad en penciones para poder trabajar por wilmer ... [Access] 0 12/03/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 124 12/01/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
10/06/2007 Multiples escritorios en Windows XP
25/08/2007 Variables en Transact SQL    forma parte de...Tutorial de Transact SQL
09/01/2009 Cómo arreglar un portatil que no arranca
27/02/2007 ¿Permite Windows Vista reproducir peliculas descargadas o "Piratas"? SI, si lo permite
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
05/08/2007 Como ver peliculas descargadas en Windows Vista
08/09/2007 Funciones en Transact SQL    forma parte de...Tutorial de Transact SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
28/09/2009 IIsAdmin.NET - Como tener mas de un sitio web en IIS en Windows XP

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]