我开发了chrome扩展程序,并希望使用REST API将一些来自chrome扩展程序的数据存储到我的wordpress网站。
我有2个问题:
第一个错误是我在两个不同的域之间存在交互作用,这是一个错误:“从来源'chrome-extension:// hafjgepbbnbjcmmkealkikdjlmojdlkf访问'https://groupio.fr/wp-json/groupio/v1/ean/处的XMLHttpRequest已经被CORS策略阻止:对预检请求的响应未通过访问控制检查:“ Access-Control-Allow-Origin”标头包含无效值“。”
第二个是从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',
) );
} );
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;
} );
这应该允许正确设置标题。