【发布时间】:2021-12-27 21:51:04
【问题描述】:
我正在尝试使用 jquery-rss 解析博客的 RSS 提要,特别是因为它能够在 XML 节点内解析嵌套的 HTML 元素(如图像)。我在本地完美地运行了这个(具有讽刺意味的是,因为通常是本地开发给我带来了最大的 CORS 悲伤):
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>jquery.rss example</title>
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="jquery.rss.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script>
jQuery(function($) {
$("#rss-feeds").rss("https://blog.sonelp.com/rss.xml",
{
limit: 3,
layoutTemplate: '<div class="news-items"><div class="row">{entries}</div><div class="view-all col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12"><a href="https://blog.sonelp.com">View archive</a></div></div>',
entryTemplate: '<div class="news-item col-12 col-sm-12 col-md-4 col-lg-4 col-xl-4"><div class="news-head"><a class="news-title" href="{url}">{title}</a><img class="img-fluid" src="{teaserImageUrl}" /><span class="news-date">{date}</span></div><div class="news-body">{shortBodyPlain}</div><div class="buttons"><a href="{url}" class="button-2 btn btn-primary read-more" target="_blank">Read more</div></div>'
})
})
</script>
</head>
<body>
<div id="rss-feeds"></div>
</body>
</html>
但是一旦我将它添加到我的网站,我就会收到以下“混合内容”错误:
混合内容:“https://blah.com/”的页面是通过 HTTPS 加载的, 但请求了不安全的脚本 'http://www.feedrapp.info/?callback=jQuery16409576896732281612_1640639664174&q=https%3A%2F%2Fblog.sonelp.com%2Frss.xml&num=3&_=1640639664276'。 此请求已被阻止;内容必须通过 HTTPS 提供。
请注意,https 用于我尝试运行此代码的托管站点和实际的 XML 提要——问题显然是 jquery-rss 使用同一开发人员的 Feedr 替换解决方案Google 现已弃用的 Feed API,通过 http 调用(“...请求了一个不安全的脚本 'http://www.feedrapp.info...”)。我尝试直接在 jquery-rss 脚本中更正此问题,但无济于事。关于如何在此处继续的任何想法?
【问题讨论】:
-
如错误所示,将
http://更改为https://。另请注意,jQuery 1.6.4 已经过时了(实际上差不多 10 年)。使用 3.6.0。 -
正如我的问题所指出的:“我尝试直接在 jquery-rss 脚本中更正(http/https 差异),但无济于事。”请进一步注意,我在这里使用的是开发人员自己的工作示例,它使用了 jQuery 1.6.4(现代 RSS 解析器并不多,做我需要的 OOTB 的更少):embed.plnkr.co/WQRoCYLld162uplnz1rc/preview
-
抱歉,错过了。 '......无济于事'发生了什么?这是您需要进行的修复。此外,如果开发人员自己的工作示例使用 1.6.4,那么我建议找到一个更新/更安全的库,因为它于 2011 年 9 月发布
-
如果我删除它或者我只是尝试将
https直接添加到提要的调用方式中,它将阻止脚本运行。如果上面开发者自己的 https 链接示例正在运行,按理说我应该能够让我的也这样做。 -
@RoryMcCrossan 我终于成功地将 jquery-rss 脚本修改为只返回 https:,它终于可以工作了。如果您想发布您的回复作为答案,我不会相信您的建议。 :)
标签: jquery xml rss mixed-content