【问题标题】:How can I make an Ajax call to an HTTP time server site from HTTPS?如何从 HTTPS 对 HTTP 时间服务器站点进行 Ajax 调用?
【发布时间】:2016-06-18 14:06:39
【问题描述】:

我正在尝试从http://timeapi.org/utc/now.json 获取当前时间。我正在使用以下内容:

  var date;
  $.ajax({
    dataType: 'jsonp',
    url: 'http://timeapi.org/utc/now.json',
    success: function (result) {
        date = result.dateString;
    }
  });

该 URL 仅作为 HTTP 提供,但我从 HTTPS 站点调用它。这会导致错误:

https://myurl.com”通过 HTTPS 加载,但请求了不安全的脚本“http://timeapi.org/utc/now.json?callback=jQuery1122020058229618158618_1466258121249”。此请求已被阻止;内容必须通过 HTTPS 提供。

timeapi网站实际上并不以https存在,所以将URL改为https会导致新的错误:http://timeapi.org/utc/now.json

如何强制加载?似乎没有任何 https 网络时间服务,但我想必须有一种方式让 https 网站上的人们也使用外部计时服务。

【问题讨论】:

  • 你不能。从 HTTPS,只有 HTTP。您可以从 HTTP 调用 HTTP 和 HTTPS。您可以做的是在您自己的网络服务器中创建一个 https 包装器(在 php 或节点中),并从那里检索 timeapi.org 的值。
  • 在您的服务器上使用代理或支持https的第三方代理服务

标签: javascript ajax https


【解决方案1】:

你不能。

来自 HTTPS,只有 HTTPS。从 HTTP 你可以调用 HTTP 和 HTTPS。

您可以做的是在您自己的网络服务器中创建一个 https 包装器(在 php 或节点中)并从那里检索 timeapi.org 的值。

类似这样的:

<?php
header('Content-Type: application/json');
echo(file_get_contents('http://timeapi.org/utc/now.json'));

【讨论】:

    【解决方案2】:

    您不能从 https 发出 http 请求。

    same origin policy限制

    同源策略是一种关键的安全机制,它限制从一个源加载的文档或脚本如何与另一个源的资源进行交互。它有助于隔离潜在的恶意文档,减少可能的攻击媒介。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2014-03-15
      相关资源
      最近更新 更多