如何从HTTPS对HTTP时间服务器站点进行Ajax调用?

时间:2016-06-18 14:06:39

标签: javascript ajax https

我正试图从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,因此将网址更改为https会导致新的错误:http://timeapi.org/utc/now.json

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

2 个答案:

答案 0 :(得分:4)

你不能。

从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'));

答案 1 :(得分:1)

您无法通过https发出http请求。

same origin policy

的限制

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