如何将 CORS 支持添加到 Wordpress RSS2 提要?

Posted

技术标签:

【中文标题】如何将 CORS 支持添加到 Wordpress RSS2 提要?【英文标题】:How to add CORS support to Wordpress RSS2 feed? 【发布时间】:2012-09-13 01:55:07 【问题描述】:

我正在尝试将 CORS (http://enable-cors.org/) 支持添加到自定义 Wordpress 主题中的 RSS2 提要。我尝试了以下方法,均无济于事:

    按照https://web.archive.org/web/20140314152828/http://bowdenweb.com:80/wp/2011/05/how-to-enable-cors-in-wordpress.html上的说明,我尝试修改主题的header.php文件并添加以下代码:

    header("Access-Control-Allow-Origin: *");

    这成功地将 CORS 标头添加到 Wordpress 帖子中,但没有添加到 RSS2 提要中。

    然后,我尝试使用“插件 API / 操作参考”,即 add_action 函数 (http://codex.wordpress.org/Plugin_API/Action_Reference)。

    我在 header.php 中添加了以下代码:

    function add_cors_headers()
    
        header("Access-Control-Allow-Origin: *");
    
    
    add_action('rss2_head','add_cors_headers');
    

再次,没有成功。现在我陷入了死胡同。有什么想法吗?

【问题讨论】:

您是否尝试将您在 2. 中提到的代码添加到您的 functions.php 文件中?您提到您将其添加到 header.php 文件时,Wordpress 文档声明它应该包含在 functions.php 中。 我在 WP 中创建了一张票,要求添加此功能core.trac.wordpress.org/ticket/50441#ticket 此外,在票的详细信息中,您可能会发现安全问题。 【参考方案1】:

您可以通过插件或添加功能来做到这一点。我认为这最终会变得更干净。

add_action( 'pre_get_posts', 'add_header_origin' );

function add_header_origin() 
    if (is_feed())
        header( 'Access-Control-Allow-Origin: *' );
    
            

【讨论】:

【参考方案2】:

将原始 rss 模板“wp-includes/feed-rss2.php”复制到您的主题目录并通过将此代码添加到您的functions.php 来激活它:

remove_all_actions( 'do_feed_rss2' );
add_action( 'do_feed_rss2', 'my_feed_rss2', 10, 1 );

function my_feed_rss2( $for_comments ) 
    $rss_template = get_stylesheet_directory() . '/feed-rss2.php';

    if( file_exists( $rss_template ) )
        load_template( $rss_template );
    else
        do_feed_rss2( $for_comments ); // Call default function

然后您可以修改您的 rss 模板并添加 jefffederman 提到的标题。

【讨论】:

【参考方案3】:

转到 wp-includes/feed-rss2.php 及以下

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);

添加

header("Access-Control-Allow-Origin: *");

【讨论】:

此解决方案需要修改核心 Wordpress 文件,在升级 Wordpress 时会被覆盖(这种情况经常发生)。我会建议一个解决方案,在主题的 function.php 文件中使用一个动作钩子来包含额外的标题。 同时添加 ob_start();在页面顶部。在无法设置标头之后,服务器可能已经开始向客户端发送数据。 永远不要修改核心 WordPress 文件。 @Axel 很好地解释了为什么以及如何避免编辑。

以上是关于如何将 CORS 支持添加到 Wordpress RSS2 提要?的主要内容,如果未能解决你的问题,请参考以下文章

如何在无头 wordpress 环境中确保图像请求的 CORS?

text 将SVG支持添加到wordpress

PHP 将特色图像支持添加到WordPress主题

如何在 wordpress 自定义背景中将 CSS 属性添加到背景大小支持

如何从 angularjs 和 CORS 支持将文件上传到球衣

如何将 CORS 标头添加到 401/403 响应?