我正在开发一个使用 google earth 插件的网络应用程序。最近,增加了非公共(public)用户登录的新要求,这意味着一些用户现在通过 https 使用该站点。在测试中出现问题的是自定义地标图标(他们使用 http 工作)。
图标托管在为页面提供服务的同一台服务器上。
这里是每个协议(protocol)的 url。
http - http://localhost/Images/yellow.png
https - https://localhost/Images/yellow.png
我可以点击该链接,图像将如您所愿出现。
图像 hrefs 在动态生成的 kml 中声明为图标样式。
我想避免通过 http 加载图像,因为我认为这会导致 Internet Explorer 向用户显示混合内容警告。
如何在使用 https 时正确加载图像?
最佳答案
我自己一直在努力解决这个问题——简短的回答是这行不通。如果内容由生成任何类型的错误/提示(身份验证、无效证书等)的 HTTPS 站点提供,则插件将不会加载内容。
有趣的是,桌面客户端运行良好,并在必要时提示用户输入凭据。但是,两个客户端都不允许使用不受信任的证书在站点外提供内容。
我发现的唯一解决方法是:
- 在托管内容的服务器上使用受信任的 HTTPS 证书(信任客户端系统上的证书或只使用真实证书。)
- 不要使用 HTTPS 基本身份验证,因为它总是会生成 401/Challenge 响应,网络浏览器客户端会简单地忽略它
- 如果需要身份验证,请使用 NTLM 身份验证和通用(例如域)登录。如果您在 Interent Explorer(或 .NET WebBrowserControl)中加载插件,将正确处理身份验证并显示图像。
我上周参加了 Google 地球管理员培训,培训师确认了这个“错误”。它应该在下一版本的插件中得到修复(它实际上可能已经被修复——你使用的是什么版本的插件?)
关于ssl - 如何获取地标图标以通过 ssl 加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963939/