我正在尝试在我的大学服务器上托管我的网站,当我访问它时它被用作https但是我的网站中的RSS内容在大学服务器上托管时没有显示,因为引用的RSS源使用HTTP。
我目前得到的错误如下:
Mixed Content: The page at '<uni website address>' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://rss2json.com/api.json?rss_url=http%3A%2F%2Ffeeds.feedburner.com%2Fdaily-express-news-showbiz'. This request has been blocked; the content must be served over HTTPS.
有什么方法可以让http内容在https网站上运行?
如果有人建议将其作为解决方案,我无法更改任何服务器设置。
我也在这个问题中查了一个类似的问题,这个问题对我的问题没有帮助:Dealing with HTTP content in HTTPS pages
接受的答案没有帮助我的原因是因为我不知道如何像他们建议的那样重写URL或者在哪里包含代理页面/ servlet的创建(以及如何创建它们)。
我正在使用的一个http网址的例子是
http://rss2json.com/api.json?rss_url=http%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Fworld%2Frss.xml
答案 0 :(得分:0)
所以我最终通过创建一个PHP脚本来实现这一点,我认为它充当了代理,因此我可以收到我想要显示的源代码。这是我创建的一个php脚本的示例。
<强> bbc_home.php 强>
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-Type: text/xml");
?>
<?php
function get_url_contents($url){
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
$url = "http://rss2json.com/api.json?rss_url=http%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Fworld%2Frss.xml";
$str = file_get_contents($url);
echo $str;
?>
我的JS档案片段
function bbcHomeNews() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200)
{
var data = JSON.parse(xhr.responseText);
if(data.status == 'ok'){
var dataItemLength = data.items.length;
itemAmount = 4;
for(var i=0;i<itemAmount;++i){
$("#newsFeedContent").append("<div class='panel' id='bbcNewsContent'>" +
"<h2>" + data.items[i].title + "</h2>" +
"<div>" + data.items[i].description + "</div>" +
"<br>" +
"<button class='btn btn-default'><a href=" + data.items[i].link + ">More</a></button>" +
"</div>");
}
}
if(data.status == 'error'){
returnErrorMessage("BBC Feed");
}
}
};
xhr.open('GET','scripts/php/bbc_home.php',true);
xhr.send();
}
我希望这可以帮助那些遇到类似问题的人!