2017-09-16 88 views
0

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

Mixed Content: The page at ' https://www.33k.com/player/playerudan.php ' was loaded over HTTPS, but requested an insecure script ' http://33k.thepuremix.net/json.xsl '. This request has been blocked; the content must be served over HTTPS.

为了得到这个数据我使用类似下面的代码:

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

不知道如何解决它或使其工作。 Icecast上有这样一个Crossdomain.xml,我可以给它配置或其他任何东西来修复它?

UPDATE: 上述链接是两个不同的网站。这不是一个子域问题。链接看起来很像。域A(HTTPS)想要从域B(HTTP)获取JSON。

+2

这是由设计。安全连接无法向非安全连接发出请求(至少不是没有用户授权的情况下)。您需要使网站HTTP也可以,或者您所调用的域名应该更改为HTTPS。更好的是,由于请求者和收件人页面都在同一个域中,只需使用相对路径 –

+1

@Rory他不能只在他的https上创建后端服务(例如在php中)并从http上调用另一个服务? –

+2

@LordMidi这完全是错误的。 JSONP是偶尔用于跨域请求的数据格式。它与安全/非安全内容之间的请求完全无关。 –

回答

1

从HTTPS调用HTTP被设计为在注释中提到的@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

+0

谢谢。你能检查我最后的评论吗?在主要职位? – DannyBoy

+0

NO。我认为有错误。这是两个不同的网站。一个网站是:'thepuremix.net'(HTTP),一个是'33k.com'(HTTPS)。 – DannyBoy

+1

纠正这是我们的错误,但仍然是不可能的,我已经编辑了我的答案,并提供了有关“同源策略”的信息,这就是无法做到您想做的事情的原因。 –