RSS 提要中的脚本标签

Script Tag in RSS Feed

我为 Umbraco 博客创建了一个 RSS 提要。如下所示,包含在脚本标签中的函数出现在生成的 XML 中,这意味着它未能通过 RSS 验证并显示错误 'Undefined rss element: script'(根据 https://validator.w3.org/feed/)。我不知道为什么会出现这个脚本标签。 RSS XML 定义(下文进一步介绍)不包含它,我在代码库中找不到对该函数或其内容的引用。

有谁能解释为什么会出现这个脚本标签及其内容?我需要删除它才能通过 RSS 验证。谢谢。

我目前只在本地主机上测试这个。

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">
<script>
(function(){EventTarget.prototype.ol_originalAddEventListener=EventTarget.prototype.addEventListener,EventTarget.prototype.addEventListener=function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.ol_originalAddEventListener(t,e,r),"click"===t&&setTimeout(function(){!window.OL_NOT_LOGIN_PAGE&&n.setAttribute&&n.setAttribute("data-ol-has-click-handler","")},0)}})("")
</script>
<channel>
<title>Script Tag in RSS XML...</title> etc
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:slash="http://purl.org/rss/1.0/modules/slash/">

    <channel>
        <title>@FEED_TITLE</title>
        <atom:link href="@feedUrl" rel="self" type="application/rss+xml" />
        <link>@feedParentPage.UrlWithDomain()</link>
        <description>@FEED_DESCRIPTION</description>
        <lastBuildDate>@lastBuildDate.ToString("r")</lastBuildDate>
        <language>@LANGUAGE</language>
        <sy:updatePeriod>@UPDATE_PERIOD</sy:updatePeriod>
        <sy:updateFrequency>@UPDATE_FREQUENCY</sy:updateFrequency>
        @foreach (IPublishedContent item in feedItems.OrderBy(ARTICLE_DATE_PROPERTY_ALIAS + " desc"))
        {
            string articleDescription = item.GetPropertyValue<string>(INTRODUCTION_PROPERTY_ALIAS);
            @:<item>
                <title>@(item.HasProperty(ARTICLE_TITLE_PROPERTY_ALIAS) ? item.GetPropertyValue<string>(ARTICLE_TITLE_PROPERTY_ALIAS) : item.Name)</title>
                @:<link>
                @umbraco.library.NiceUrlWithDomain(item.Id)
                @:</link>
                <pubDate>@(((DateTime)item.GetPropertyValue(ARTICLE_DATE_PROPERTY_ALIAS)).ToString("r"))</pubDate>
                <dc:creator><![CDATA[@CREATOR_NAME]]></dc:creator>
                <category><![CDATA[@CATEGORY]]></category>
                <guid isPermaLink="false">@item.UrlWithDomain()</guid>
                <description><![CDATA[@articleDescription]]></description>
            @:</item>
        }
    </channel>
</rss>

(所以,我真的没有答案,但我没有足够的声誉来发表评论。)

就在几分钟前,我在我刚刚部署的 AWS s3 页面(静态 js/css/html 页面)的错误消息中看到了一个类似奇怪的脚本标签。

该页面显示的内容看起来像标准的 AWS 错误页面,但在 XML 中有一个脚本标签,其内容与您显示的内容相同。我找到了你的 post 因为我在搜索 'ol_originalAddEventListener'

在我的错误案例中,指定的密钥与我在将相同代码重新部署到常用位置时能够使用的完全相同url。

不是答案,但也许更有帮助的证据?

事实证明,Chrome 正确呈现 RSS XML 存在一个已知问题。

(相关link:Google Chrome rendering XML as text for RSS feed)

我还没有找到为什么特定 JS 出现在 Chrome 中的脚本标记中的完整解释,但在 Edge、Firefox 和 IE11 中本地生成 RSS 提要会生成格式正确的 XML 没有有问题的脚本标签。在这些浏览器中呈现的 RSS XML 通过了 RSS 验证,这解决了我的问题。

有关信息,可以使用 view-source: 在 Chrome 中查看正确呈现的 RSS XML

我想我会回答我自己的问题以防其他人登陆这里。

此脚本由 OneLogin 浏览器扩展程序注入。我建议您为该域禁用它或完全删除它,并使用不同的(更好的)密码管理器,如 1Password 或 LastPass。