2014-09-06 39 views
10

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

这是WordPress站点被我做的测试...我使用的测试CORS网站,检查它是否在工作,这是... http://kiwa-app.loading.net/

但是,当我尝试用网址JSON api提供给我的是不再工作了。我仍然有错误没有'访问控制允许起源' http://kiwa-app.loading.net/?json=info

我会apreciate一些帮助谢谢!响应发送到浏览器

回答

14

好吧,我终于想通了一个简单的方法...

你只需要添加:

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

在文件api.php,该文件位于的wp-content /插件/ JSON-API /单身/ api.php

我希望它能帮助更多的人有同样的问题!

+0

对于像我这样混淆的人来说,在没有空白行的<?php'之前加上这一行。 – spetz 2017-02-28 21:58:21

+2

不应该编辑核心文件,使用过滤器更好。 – 2017-03-17 01:36:12

7

之前,我们可以运行two action hooks,并插入一个新的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 <pre><code>add_action('$controller-$method', function(){ /*YOUR-STUFF*/ });</code></pre>"); 

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

的行动为json-rest-api插件是:json_insert_post,json_insert_user,json_query_navigation_headers,wp_json_server_before_serve – adosaiguas 2015-03-21 20:40:56

8

我用了几个不同的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文件)的任意组合,因为它会在你生气。

+0

这适用于v1,但我刚刚遇到了这个 - 我还没有与v2运气。 – sheriffderek 2015-10-19 00:10:30

+0

适用于Wordpress API V2。我能找到的最佳解决方案。 – Hinrich 2018-01-01 19:37:05

2

在WordPress插件转到> JSON API>编辑

从右手文件选择选择

JSON-API /单身/ api.php

您将需要添加以下行

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

您的代码看起来应该与此类似。 在其他地方添加此行可能无法按预期工作。

<?php 
header("Access-Control-Allow-Origin: *"); 
class JSON_API { 

    function __construct() { 
    $this->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() { 
0

对于谁是具有多个起源

在您的服务器托管你的WordPress网站这个问题的人,导航到../wp-content/plugins/json-rest-api和这里打开plugin.php文件。

在此功能

function json_send_cors_headers($value) {..} 

更改标题

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

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

希望这有助于人谁是承担相同的问题一

相关问题