2011-02-17 75 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; 
     } 

    }