为什么HTTP图像不出现在HTTPS应用程序中?

时间:2013-10-30 00:24:42

标签: javascript asp.net image https arcgis

我已经使用不安全(HTTP)ArcGIS地图服务保护(HTTPS)ASP.Net MVC 4应用程序。使用JavaScript调用这些服务以获取相关的地图图像。

如果我为我的应用程序使用HTTP,一切都按预期工作。但是,如果我使用HTTPS,IE10和Chrome不显示请求的地图图像(IE提示显示不安全的内容),但Safari显示图像,没有问题。

例如,我的应用程序是 https ://app.mydomain.com,我的地图服务位于 http ://gis.mydomain.com < / p>

我运行fiddler并将响应视为类似的内容(删除了一些参数以简化): http ://gis.mydomain.com/arcgis/rest/services/Energy/BaseService/MapServer/出口....&安培; F =图像 但图像未显示。如果我将此URL直接输入我的地址栏,则会显示预期的图像。

任何地方都没有报告任何错误,包括IIS 7.5日志。我意识到混合内容并不理想,但目前我没有选择。关于这类问题,我发现了很多关于SilverLight的引用,但我只使用了javascript和ASP.Net。我还比较了https和http的页面源 - 没有区别。

2 个答案:

答案 0 :(得分:5)

在浏览安全网站时,除非您(访问者)授权,否则浏览器不会加载“不安全的项目”。

从服务器端解决此问题的唯一方法是将“非安全”内容设置为安全,方法是将其放在https域下。

答案 1 :(得分:1)

解决此问题的另一种方法是通过您的(https)主机代理不安全的内容。 ESRI在此过程中有一些稍微过时的docco(包括一个示例ASP.Net代理页面)here,但大部分/全部应该仍然保留在最新版本的API中。从内存来看,他们最近(3.5?)使代理可以在每个服务的基础上进行配置,这非常方便。

您可以忽略基于令牌的身份验证内容,您真正想要的就是让不安全的内容通过安全的主机。