【问题标题】:Convert all http:// to https:// using jQuery or Javascript使用 jQuery 或 Javascript 将所有 http:// 转换为 https://
【发布时间】:2016-11-22 01:35:12
【问题描述】:

我正在尝试将 src 标记中的链接转换为 https://。更准确地说是 Youtube iframe。例如:

<iframe width='650' height='365' src="http://www.youtube.com/embed/y9kBixgYKzw" frameborder="0" allowfullscreen></iframe>

我尝试了以下代码,但没有成功:

function RedirNonHttps() {
    if (location.src.indexOf("https://") == -1) {
        location.src = location.src.replace("http://", "https://");
    }
}
<body onload="RedirNonHttps();">

有人能指出正确的方法吗?

【问题讨论】:

  • 在 JS 中执行此操作在此过程中为时已晚,因为对 http:// URL 的请求已经发出。您需要直接在源代码中进行更改,或者在将 HTML 提供给客户端之前在服务器上进行更改
  • 首先使用&lt;iframe src="//www.youtube.com/embed/y9kBixgYKzw" …&gt;

标签: javascript jquery


【解决方案1】:

一般来说,下面的例子展示了它是如何工作的。通过each 循环元素并替换源标记,如您的代码中所示:

$("iframe").each(function() {
    $(this).attr("src", $(this).attr("src").replace("http://", "https://"));
});

但请记住,这可能为时已晚。帧可能已经通过http 加载。如前所述,您必须在服务器端执行此操作,以确保内容将通过 https 加载。

【讨论】:

    【解决方案2】:

    您是否尝试更改 iframe 源中 URL 的协议?或者尝试将传入请求重定向到 HTTPS 对应方?

    如果是后者,您可能想尝试这样的解决方案: Detect HTTP or HTTPS then force HTTPS in JavaScript

    if (window.location.protocol != "https:")
        window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);
    

    您可以在自己的 Javascript 中运行它。

    如果您尝试更改 iframe 的来源,我相信您会遇到 eisbehr 解释过的问题。也就是说,外部源已经通过 HTTP 加载。

    【讨论】:

      【解决方案3】:

      尝试用“//”替换“https://”

      src="//www.youtube.com/embed/y9kBixgYKzw"
      

      【讨论】:

        【解决方案4】:

        试试看

        if (location.protocol != 'https:')
        {
         location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-30
          • 2016-05-08
          • 1970-01-01
          • 2018-05-26
          • 1970-01-01
          • 2012-03-12
          相关资源
          最近更新 更多