3

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

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

例如,假设我的应用程序是https://app.mydomain.com ,而我的地图服务是http://gis.mydomain.com

我运行 fiddler 并看到响应类似于(删除了一些参数以简化):http ://gis.mydomain.com/arcgis/rest/services/Energy/BaseService/MapServer/export?....&f=image 但是该图像未显示。如果我直接在地址栏中输入此 URL,则会显示预期的图像。

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

4

2 回答 2

5

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

从服务器端解决此问题的唯一方法是通过将“非安全”内容置于 https 域下来确保其安全。

更新:

顺便说一句,如果您没有在内容 URL 中指定协议,例如//gis.mydomain.com没有指定它是http://or https://,浏览器将自动假定用于访问网站的相同协议也加载此内容。

因此,如果您使用http://它访问也会加载依赖项http://,并且如果您使用https://它也会这样做。

于 2013-10-30T00:30:52.817 回答
1

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

在您的情况下,您可以忽略基于令牌的身份验证内容,您真正要寻找的只是让不安全的内容来自安全主机。

于 2013-10-30T23:54:56.103 回答