Wordpress REST API-通过Chrome扩展程序发布呼叫

问题描述 投票:1回答:1

我开发了chrome扩展程序,并希望使用REST API将一些来自chrome扩展程序的数据存储到我的wordpress网站。

我有2个问题:

  1. 第一个错误是我在两个不同的域之间存在交互作用,这是一个错误:“从来源'chrome-extension:// hafjgepbbnbjcmmkealkikdjlmojdlkf访问'https://groupio.fr/wp-json/groupio/v1/ean/处的XMLHttpRequest已经被CORS策略阻止:对预检请求的响应未通过访问控制检查:“ Access-Control-Allow-Origin”标头包含无效值“。”

  2. 第二个是从Wordpress网站运行php函数后,我无法将值返回给chrome扩展名。

这是我的Chrome扩展程序的background.js文件中的REST API调用:

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){

        jQuery.ajax({

        type:"POST",
        url: "https://groupio.fr/wp-json/groupio/v1/ean/",
        contentType: 'applcation/json',

        data : {
            ean: "1234567889",
            type: "Product Code"
        },

        success:function(data){

            alert(data);
        },

        error: function(errorThrown){
            console.log(errorThrown);
        }
        });

});

这是我主题的function.php中的新端点和Rest API回调函数(如您所见,我只想返回准确的值而不处理任何东西)-并且它不起作用:

function my_awesome_func( $data ) {

    return $data['ean'];
}

add_action( 'rest_api_init', function () {
  register_rest_route( 'groupio/v1', '/ean/', array(
    'methods' => 'POST',
    'callback' => 'my_awesome_func',
  ) );
} );


ajax wordpress google-chrome-extension wordpress-rest-api
1个回答
0
投票

Access-Control-Allow-Origin设置为空白,因为未从受支持的协议发送请求。目前,WordPress正在针对以下项目验证此列表:

$protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' );

好消息是,您可以通过“ kses_allowed_protocols”过滤器对此列表进行更改。因此,在您的WordPress插件或函数文件中,添加以下内容以添加对“ chrome-extension”的支持]

add_filter( 'kses_allowed_protocols', function ( $protocols ) {
    $protocols[] = 'chrome-extension';
    return $protocols;
} );

这应该允许正确设置标题。

© www.soinside.com 2019 - 2024. All rights reserved.