Java 为HTTPS站点路由HTTP映像

Java 为HTTPS站点路由HTTP映像,java,https,routes,urlrewriting.net,Java,Https,Routes,Urlrewriting.net,我正在运行一个网站,用户可以在其内容中链接来自其他网站的图像和缩略图。在https安全用户中查看这些图像时,会收到安全警告,因为https页面中包含http内容 为了解决这个问题,我想通过我的服务器将图像路由到客户机,在那里“提供”所需的https协议 e、 g.在安全站点上查看内容时,图像标签如下所示: 作为使用Umbraco(.NET 3.5,IIS7)的网站,我已经研究过使用urlrewritingnet库,但它似乎只能重写和重定向URL 有人这样做过吗?以下方法非常有效: 我只需通过服

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

为了解决这个问题,我想通过我的服务器将图像路由到客户机,在那里“提供”所需的https协议

e、 g.在安全站点上查看内容时,图像标签如下所示:

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


有人这样做过吗?

以下方法非常有效:

我只需通过服务器上的图像字节就可以实现。我并不完全相信这是一个好的解决方案,因此,我将等待更好的解决方案:

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

    }