IE8从iframe调用ITHit.WebDAV.Client.DocManager.EditDocument时显示混合内容警告

时间:2014-06-24 20:03:40

标签: javascript internet-explorer-8 webdav ithit-ajax-file-browser

使用来自ITHit.WebDAV.Client.DocManager.EditDocument() 的IE8 中的ITHitWebDAVClient.js v1.6.0.1174调用iframe时,浏览器会显示混合内容警告,如下所示:

IE8 Security Warning

要继续,用户必须点击No。我怎样才能解决这个问题?我从HTTPS站点(例如EditDocument())调用https://testfilebrowser.com/,提供给EditDocument()的文件URL是实现为HTTPListener的HTTPS WebDAV URL(例如:{{ 1}})。站点URL和WebDAV URL位于两个不同的域中。

我还尝试在IIS中与调用者在同一网站上实现WebDAV服务器,以便它们位于同一个域中。那也行不通。例如:HTTPS站点呼叫者https://webdavhttplistener.com/folder/file.xlsx和文件URL https://testfilebrowser.com/

我知道最终用户可能会选择通过调整浏览器安全设置来抑制混合内容警告,但这不是我正在寻找的解决方案。有没有办法确保在从https://testfilebrowser.com/DAV/folder/file.xlsx调用EditDocument()时根本不显示混合内容警告?

1 个答案:

答案 0 :(得分:1)

EditDocument()内部调用iframe会在IE8中显示混合内容警告。解决此问题的一种方法是使用ITHit之外的iframe实例来调用EditDocument()

例如:

<!-- include ITHitWebDAVClient.js on parent page outside of iframe -->
<script src="ITHitWebDAVClient.js"></script>

<iframe src="...">
    <button onclick="editDocument();">Edit</button>
    <script>
        function editDocument() {
            /*
             * grab ITHit instance from parent when this executes inside iframe so that
             * a mixed content warning is not shown in IE8 when calling EditDocument()
             */
            if (window.parent !== window && typeof window.parent.ITHit !== 'undefined') {

                // use parent's ITHit instance
                ITHit = window.parent.ITHit;

                // call EditDocument()
                ITHit.WebDAV.Client.DocManager.EditDocument(path)
            }
        }
    </script>
</iframe>