在JSON API WordPress上启用CORS

我有一个带有一个名为JSON API的插件的wordpress网站。 此插件为wordpress中的内容提供JSON格式。 我能够通过添加标题(“Access-Control-Allow-Origin:*”)在wordpress上启用CORS; 在PHP标题上。 但是当我尝试使用JSON API插件提供的URL时,CORS不再起作用了。

这是wordpress网站,我正在做测试…我使用测试cors网站检查它是否正常工作,它是… http://kiwa-app.loading.net/

但是,当我尝试使用JSON api为我提供的URL时,不再工作了。 我仍然有错误No’Access-Control-Allow-Origin’http: //kiwa-app.loading.net/?json=info

我会感谢一些帮助!

好吧,我终于找到了一个简单的方法……

你只需要添加:

 

在文件api.php上,此文件位于wp-content / plugins / json-api / singletons / api.php中

我希望它可以帮助更多人解决同样的问题!

我使用了一些不同的WordPress API – 但是对于那些使用’官方’ WP-API的人来说 ,我在使用这个CORS时遇到了很多麻烦 – 而我发现的是.htaccess方法和其他一些方法之间我偶然发现…将此添加到您的主题functions.php工作得最好。

 function add_cors_http_header(){ header("Access-Control-Allow-Origin: *"); } add_action('init','add_cors_http_header'); 

一定不要使用这些的任何组合(.htaccess,header.php,api.php,functions.php),因为它会对你生气。

在将响应发送到浏览器之前,我们可以运行两个操作挂钩并插入一个新的header()

 do_action("json_api", $controller, $method); do_action("json_api-{$controller}-$method"); 

第一个是在每个方法上运行,第二个是针对特定方法。 这是第一个的实现,用注释的方式找到第二个:

 add_action( 'json_api', function( $controller, $method ) { # DEBUG // wp_die( "To target only this method use 
add_action('$controller-$method', function(){ /*YOUR-STUFF*/ });

" ); header( "Access-Control-Allow-Origin: *" ); }, 10, 2 );

在wordpress goto插件> JSON API>编辑

从右侧文件选择中选择

JSON-API /单身/ api.php

您需要添加以下行

header(“Access-Control-Allow-Origin:*”);

一旦完成,您的代码应该与此类似。 在其他地方添加此行可能无法按预期工作。

 query = new JSON_API_Query(); $this->introspector = new JSON_API_Introspector(); $this->response = new JSON_API_Response(); add_action('template_redirect', array(&$this, 'template_redirect')); add_action('admin_menu', array(&$this, 'admin_menu')); add_action('update_option_json_api_base', array(&$this, 'flush_rewrite_rules')); add_action('pre_update_option_json_api_controllers', array(&$this, 'update_controllers')); } function template_redirect() { 

对于任何有多个来源的问题的人

在托管wordpress站点的服务器中,导航到../wp-content/plugins/json-rest-api,然后打开plugin.php文件。

在这个function

 function json_send_cors_headers( $value ) {..} 

更改标题

 header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $origin ) ); 

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

希望这有助于任何引发与我相同问题的人。