2014-09-06 24 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: *'); 

希望這有助於人誰是承擔相同的問題一