2011-02-17 76 views
0

我正在运行一个网站,用户可以在其中链接图像和其他网站的缩略图。当在https安全用户中查看这些图像时,他们正在收到安全警告,因为http内容包含在https页面中。为HTTPS网站路由HTTP图像

要解决此问题,我想通过我的服务器将图像路由到客户端,通过“给”他们所需的https protokoll。

例如在安全网站上查看内容时的图像标记将是这样的: <img src="https://mysite/img.aspx?src=http://url.to/someimage.jpg" >

由于使用一把umbraco(.NET 3.5,IIS7)我的网站,我已经看着使用urlrewritingnet库,但它只是似乎是能够重写和重定向网址。

有没有人这样做?

回答

0

下工作得很好:

我知道了由刚通过服务器上的图像字节passsing工作。我并不确信它是一个很好的解决方案,所以我会等待更好的解决方案:

public partial class Img : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      string url = Page.Request.QueryString["url"]; 

      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
      request.Timeout = 5000; 
      request.ReadWriteTimeout = 20000; 
      HttpWebResponse imgresponse = (HttpWebResponse)request.GetResponse(); 
      //StreamReader sr = new StreamReader(imgresponse.GetResponseStream()); 


      Response.ContentType = "image/gif"; 
      byte[] fileBytes = GetFileBytes(imgresponse.GetResponseStream()); 
      Response.BinaryWrite(fileBytes); 
      Response.Flush(); 

     } 

     protected byte[] GetFileBytes(Stream stream) 
     { 

      byte[] fileBytes = null; 
      byte[] buffer = new byte[4096]; 

      try 
      { 

       MemoryStream memoryStream = new MemoryStream(); 
       int chunkSize = 0; 
       do 
       { 
        chunkSize = stream.Read(buffer, 0, buffer.Length); 
        memoryStream.Write(buffer, 0, chunkSize); 
       } while (chunkSize != 0); 
       fileBytes = memoryStream.ToArray(); 

      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 

      return fileBytes; 
     } 

    }