为HTTPS网站路由HTTP图像
问题描述:
我正在运行一个网站,用户可以在其中链接图像和其他网站的缩略图。当在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库,但它只是似乎是能够重写和重定向网址。
有没有人这样做?
答
下工作得很好:
我知道了由刚通过服务器上的图像字节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;
}
}