【问题标题】:Trying to retrieve JSONP from HTTP server from a HTTPS website尝试从 HTTPS 网站的 HTTP 服务器检索 JSONP
【发布时间】:2017-09-16 19:47:01
【问题描述】:

我有一个基于 HTTPS 的网站,我有一个 JS 代码从基于 HTTP 的网站获取数据。我收到 HTTP 服务器不受信任的错误。 虽然相同的代码适用于 HTTP 到 HTTP。但不是在 HTTP 到 HTTPS 上。 这是错误:

混合内容:“https://www.33k.com/player/playerudan.php”处的页面通过 HTTPS 加载,但请求了不安全的脚本“http://33k.thepuremix.net/json.xsl”。此请求已被阻止;内容必须通过 HTTPS 提供。

为了获取这些数据,我使用如下代码:

var URL = "http://33k.thepuremix.net/json.xsl"
$.getJSON( URL, function( data) {
 console.log( data );
});

知道如何修复它或使其正常工作。 Icecast 上是否有这样的 Crossdomain.xml,我可以提供 configure 或其他任何东西来修复它?

更新: 以上链接是两个不同的网站。这不是子域问题。链接看起来有点像。域 A(HTTPS) 想要从域 B (HTTP) 获取 JSON。

【问题讨论】:

  • 这是设计使然。安全连接不能向非安全连接发出请求(至少在没有用户授权的情况下不能)。您也需要将您的网站设为 HTTP,或者您要调用的域应更改为 HTTPS。更好的是,由于请求者和接收者页面都在同一个域中,只需使用相对路径
  • @Rory 他不能在他的 https 上创建一个后端服务(例如在 php 中),然后在 http 上调用另一个吗?
  • @LordMidi 这完全是错误的。 JSONP 是一种偶尔用于跨域请求的数据格式。它与安全/非安全内容之间的请求完全无关。
  • @RoryMcCrossan 他们有不同的域。
  • 或者他可以将json.xsl 脚本从子域http://33k.thepuremix.net/json.xsl 移动到域https://www.33k.com。如果他有可能的话。

标签: javascript jquery json https getjson


【解决方案1】:

从 HTTPS 调用 HTTP 被设计阻止,正如 cmets(同源策略)中提到的 @RoryMcCrossan,您可以将脚本从 HTTP 移动到 HTTPS 或制作后端脚本(例如在 PHP 中)并从中调用 HTTP喜欢:

JavaScript(HTTPS) -> PHP(HTTPS) -> PHP(HTTP)
JavaScript(HTTPS) <- PHP(HTTPS) <- PHP(HTTP)

在 PHP 中创建 http 请求的参考:Http Request in PHP

这里还有一些关于Same Origin Policy的信息

【讨论】:

  • 谢谢。你能看看我最后的评论吗?在主帖中?
  • 没有。我认为有错误。这是两个不同的网站。一个网站是:thepuremix.net (HTTP),一个是 33k.com (HTTPS)。
  • 更正这是我们的错误,但仍然不可能,我已经用Same Origin Policy 的信息编辑了我的答案,这就是无法做你想做的事情的原因。
猜你喜欢
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多