jQuery.load(),混合 HTTP/HTTPS 和 Internet Explorer

2023-12-07

我正在尝试使用以下命令加载远程 HTML 页面jQuery.load('https://someurl.com .someClass')。执行加载的页面位于 HTTPS 上;远程页面可用作 HTTP 和 HTTPS。在合理的浏览器中一切正常,但 IE 抛出混合 HTTP/HTTPS 内容安全警告 - 远程页面具有 HTTP 链接包含的 CSS 和 JS,即使作为 HTTPS 请求也是如此。关于如何在 IE 中成功提取混合内容文件而不触发警告的任何线索?修改远程页面不是一个选项。

EDIT

需要明确的是,我正在尝试通过 HTTPS 加载远程文件。该文件包含 HTTP 资源(img、css、js)的链接;因为我提供了一个选择器.load(),合理的浏览器不会尝试解析并执行文档; IE 确实如此。


您无法绕过 IE 中的混合内容警告。如果远程资源可通过 HTTP 和 HTTPS 访问,您可以确保您的协议匹配jQuery.load(location.protocol + '//someurl.com .someClass')


根据远程页面中混合内容的问题进行了更新:

jQuery.load加载整个响应文本放入 documentFragment 中,然后拉出选择器指示的适当部分(请参阅jQuery 1.4.4 ajax.js)。整个远程页面被解析为 HTML,并且必须经过浏览器的安全流程;在许多方面,通过确保所有协议匹配和/或仅返回片段(如果这就是您所需要的),可以更简单地确保响应是“干净的”。

如果您不修改其他资源,那就是更加稳健,您需要将所有出现的 HTTP 替换为 HTTPS(反之亦然),而远程资源仍然只是一个字符串。这是一个脆弱的 jQuery 插件作为该技术的示例,大部分来自jQuery 1.4.4 $.load 函数:

(function($){
    var http = "http:",
        https = "https:",
        rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
        proto = location.protocol,
        otherProtoUri = new RegExp("\\b" + (proto === http ? https : http) + "(//[a-z\\d.-]+)", "gi");

    $.fn.protocolModifyLoad = function(url, yesIKnowThisIsFragile, selector) {
        var self = this;

        if ( !this.length || !yesIKnowThisIsFragile) {
            return this;
        }

        $.ajax({
            url: url,
            type: "GET",
            dataType: "html",
            complete: function( res, status ) {
                // If successful, inject the HTML into all the matched elements
                if ( status === "success" || status === "notmodified" ) {
                    // Force occurences of the other protocol into the current one
                    var response = res.responseText.replace(otherProtoUri, proto + "$1");

                    // See if a selector was specified
                    self.html( selector ?
                        // Create a dummy div to hold the results
                        jQuery("<div>")
                            // inject the contents of the document in, removing the scripts
                            // to avoid any 'Permission Denied' errors in IE
                            .append(response.replace(rscript, ""))

                            // Locate the specified elements
                            .find(selector) :

                        // If not, just inject the full result
                        response);
                }
            }
        });

        return this;
    };
})(jQuery);

Usage: $('#your > .selector').protocolModifyLoad(location.protocol + '//someurl.com', 'thisIsFragile!!!', '.someClass');

该函数省略了callback and params的论据$.loadyesIKnowThisIsFragile添加参数作为微妙的提醒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery.load(),混合 HTTP/HTTPS 和 Internet Explorer 的相关文章

  • 如何在 jquery 中使 ajax 数据键动态化?

    我试图使内联编辑成为动态的 因此它只依赖于我的标记中的一些数据属性 所以现在的代码如下 inline edit editable function value settings var editableField this ajax typ
  • JavaScript 中的正则表达式用于验证十进制数字

    我想要 JavaScript 中的正则表达式来验证十进制数字 它最多只允许两位小数 例如 它应该允许10 89但不是10 899 它还应该只允许一个句点 例如 它应该允许10 89但不是10 8 9 尝试使用以下表达式 d d 0 2 如果
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • Ajax JSON 数据和灯箱冲突

    我有一个带有灯箱插件的画廊设置光廊 http sachinchoolur github io lightGallery docs 该画廊与静态 HTML 完美配合 当我动态抓取 API 数据并尝试让灯箱处理这些项目时 问题就出现了 我似乎无
  • 使用 jQuery UI 日期选择器选择日历更改 URL

    我正在使用 jQuery UI 选择器 我想知道当有人选择日期时是否有可能 它会自动将他们重定向到 URL 如下所示 index php date 2013 10 15 这是我正在使用的插件 Date
  • 限制 jQuery id 字符串吗?

    简而言之 我的问题是字符串在 jQuery 中作为可搜索 id 或可搜索内容有什么限制 更新 我得到了 ID 部分 但不是为什么我什至无法使用该字符串搜索 html 内容 对于任何愿意告诉我一个正则表达式来将模式从 MM dd yy HH
  • Jquery 两个字段的时间差(以小时为单位)

    我的表单中有两个字段 用户可以在其中选择输入时间 start time end time 我想在更改这些字段时重新计算另一个字段的值 我想做的是获取两次之间的小时数 例如 如果我的开始时间为 5 30 结束时间为 7 50 我想将结果 2
  • JSON 数据中的 jQGrid celledit 显示 URL 未设置警报

    我需要从服务器加载 JSON 并且希望用户能够单击并编辑该值 但是当他们编辑时 它不应该调用服务器 我的意思是我不会立即更新 所以我不想编辑网址 所以我尝试了 ClientArray 但它仍然显示 Url is not set 警报框 但是
  • `attr('checked', false)` 不适用于 IE6

    正如标题所说 我无法获取 attr checked false 在 IE6 上工作 我正在克隆一些 HTML 然后在将新克隆的 HTML 分配给元素之前 我会运行它并取消选中新克隆部分中的所有复选框 这在除 IE 6 之外的所有浏览器中都可
  • CORS 在 jquery 中工作正常,但在 angularjs 中不行

    我的服务器端是php mysql 我正在另一个域的 Web 服务中进行 Ajax 调用 其中启用了 的访问控制 var postUrl http logical brains com elance clone test login php
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • jqGrid - 使所有列不可排序?

    除了添加之外 有没有办法使网格上的所有列都不可排序sortable false到每一列 我知道您可以在网格级别设置全局选项 但不知道是否可以在 colModel 级别执行此操作 您可以使用 colmodel 模板来实现此目的 cmTempl
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 简单的 jQuery(scrollTo 和 animate)在 IE 中不起作用

    我刚刚注意到一些简单的 jQuery 无法在移动版 IE9 和 IE10 上运行 我有一些版权链接和简单的滑动接触形式 它使用animate 我还结合使用scrollTo 插件和jQuery 我尝试了不同的版本 仍然没有解决 也许我错过了一
  • HTTP:为什么在 get 请求中发送用户名和密码是错误的?

    一般做法是 当您登录或执行其他需要您的用户名和密码的操作时 您将其发送到发布请求的正文中 此外 为了增加安全性 应使用 https 在 get 请求中 这些参数作为 URL 的一部分发送 但据我了解 在 https 中 正文和标头都是加密的
  • JQuery UI Selectable 插件:当 div 溢出时使滚动条不可选择

    我有一个 div 设置为overflow auto 该 div 的内容是可选择的 使用 jQuery UI 当 div 溢出并出现滚动条时 滚动条本身变为可选择状态 因此滚动效果不佳 在 FF Chrome 中 我可以滚动 div 但我得到
  • 如何使使用 css 调整大小的图像在 IE 中看起来不错?

    当使用 css 宽度 高度或属性宽度 高度缩放图像时 IE6 和 IE7 无法很好地缩放网页中的图像 我不确定它默认使用哪种算法 但这不好 在这些浏览器中缩放时 缩放图像会显示锯齿伪影 幸运的是 有一种方法可以通过简单的 css 规则强制
  • 编辑第一个选项名称

    我有以下我无法访问的代码 我想要做的是将一些文本添加到现在为空的第一个选项中 诸如 选择地址 之类的文本
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小

随机推荐