来自 http 站点的图像在 https 站点上:混合模式
Images from http site on https site: mixed mode
我基于 https 的站点(站点 A)使用来自基于 http 的站点 B 的图像。我导致了混合内容错误。为了解决这个问题,我找到了用我的控制器方法交换每个外部 link 的解决方案,比如 http://www.siteB.com/imageX.png 转发到外部图像。新的 link 格式为:
方法/api/misc/forward
的代码如下:
[HttpGet]
public async Task<HttpResponseMessage> Forward(string url)
{
HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
try
{
var response = Request.CreateResponse(HttpStatusCode.Found);
response.Headers.Location = new Uri(HttpUtility.UrlDecode(url));
return response;
}
catch (Exception ex)
{
httpResponseMessage.StatusCode = HttpStatusCode.NotFound;
_loggerService.LogException(ex, url);
}
return httpResponseMessage;
}
但浏览器仍然能够将其识别为混合模式....为什么?
发送到浏览器的原始图像 link 来自基于 https 的站点。
有什么快速提示吗?我不想缓存站点 B:) 中的所有图像。
因为您的代码发回一个重定向到另一个位置,所以,最终,浏览器仍然转到 HTTP 图像。
您的浏览器在 HTTPS 中调用控制器,然后控制器操作向浏览器发回重定向命令,浏览器从您在 response.Headers.Location
中设置的新位置检索图像。
如果你想避免混合模式,那么你需要从控制器中获取图像并从操作中获取return一个FileResult
,这样浏览器就不必访问了HTTP 站点。
另一种方法是将图像复制到您的站点。
我基于 https 的站点(站点 A)使用来自基于 http 的站点 B 的图像。我导致了混合内容错误。为了解决这个问题,我找到了用我的控制器方法交换每个外部 link 的解决方案,比如 http://www.siteB.com/imageX.png 转发到外部图像。新的 link 格式为:
方法/api/misc/forward
的代码如下:
[HttpGet]
public async Task<HttpResponseMessage> Forward(string url)
{
HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
try
{
var response = Request.CreateResponse(HttpStatusCode.Found);
response.Headers.Location = new Uri(HttpUtility.UrlDecode(url));
return response;
}
catch (Exception ex)
{
httpResponseMessage.StatusCode = HttpStatusCode.NotFound;
_loggerService.LogException(ex, url);
}
return httpResponseMessage;
}
但浏览器仍然能够将其识别为混合模式....为什么? 发送到浏览器的原始图像 link 来自基于 https 的站点。
有什么快速提示吗?我不想缓存站点 B:) 中的所有图像。
因为您的代码发回一个重定向到另一个位置,所以,最终,浏览器仍然转到 HTTP 图像。
您的浏览器在 HTTPS 中调用控制器,然后控制器操作向浏览器发回重定向命令,浏览器从您在 response.Headers.Location
中设置的新位置检索图像。
如果你想避免混合模式,那么你需要从控制器中获取图像并从操作中获取return一个FileResult
,这样浏览器就不必访问了HTTP 站点。
另一种方法是将图像复制到您的站点。