Java 为HTTPS站点路由HTTP映像
我正在运行一个网站,用户可以在其内容中链接来自其他网站的图像和缩略图。在https安全用户中查看这些图像时,会收到安全警告,因为https页面中包含http内容 为了解决这个问题,我想通过我的服务器将图像路由到客户机,在那里“提供”所需的https协议 e、 g.在安全站点上查看内容时,图像标签如下所示: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 有人这样做过吗?以下方法非常有效: 我只需通过服
作为使用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;
}
}