【问题标题】:CORS Issue Using jquery-rss to Parse XML使用 jquery-rss 解析 XML 的 CORS 问题
【发布时间】: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


【解决方案1】:

Rory McCrossan 在上面的 cmets 中得到了正确的答案:我必须确保我想要解析的 RSS 提要的 Feedr 调用使用的是https,而不是http。花了一些时间,但通过删除 ssl 的每个实例及其对 in this script 的引用,然后确保默认情况下包含 https 的 URL 的构造函数修复了我的问题,我不再有混合内容错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 2011-10-23
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2010-09-18
    • 2021-02-15
    • 2012-10-02
    相关资源
    最近更新 更多