0

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

为了解决这个问题,我想通过我的服务器将图像路由到客户端,在那里通过“给”它们所需的 https protokoll。

例如,当查看安全站点上的内容时,图像标签将如下所示: <img src="https://mysite/img.aspx?src=http://url.to/someimage.jpg" >

作为我使用 Umbraco(.NET 3.5,IIS7)的站点,我已经研究过使用 urlrewritingnet 库,但它似乎只能重写和重定向 url。

有人做过吗?

4

1 回答 1

0

以下工作非常好:

我只需通过服务器上的图像字节就可以让它工作。我并不完全相信这是一个很好的解决方案,所以我会等待更好的解决方案:

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;
        }

    }
于 2011-02-17T17:30:53.823 回答