Habilitar CORS en JSON API WordPress

Tengo este sitio de wordpress con un plugin llamado JSON API. Este complemento proporciona un formato JSON para el contenido que se encuentra en wordpress. Pude habilitar CORS en wordpress agregando un encabezado (“Access-Control-Allow-Origin: *”); en el encabezado de php. Pero cuando probé la URL que el complemento API JSON proporciona, el CORS ya no funciona.

Este es el sitio de wordpress donde estoy haciendo las pruebas … Utilicé el sitio web de test cors para verificar si estaba funcionando y es … http://kiwa-app.loading.net/

Pero cuando bash con la url que la API JSON me proporciona, ya no funciona. Todavía tengo el error No ‘Access-Control-Allow-Origin’ http://kiwa-app.loading.net/?json=info

Apreciaré alguna ayuda gracias !!!

Ok, finalmente me di cuenta de una manera fácil …

Solo tienes que añadir:

 

En el archivo api.php, este archivo se encuentra en wp-content / plugins / json-api / singletons / api.php

Espero que ayude a más personas con el mismo problema!

He usado algunas API de WordPress diferentes, pero para aquellos de ustedes que usan la API WP ‘oficial’, tuve muchos problemas con este CORS — y lo que encontré fue que entre el enfoque .htaccess y algunos otros tropezó con … agregar esto a tus funciones de tema. php funcionó mejor.

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

Asegúrese de no usar ninguna combinación de estos (.htaccess, header.php, api.php, functions.php) ya que estará enojado con usted.

Antes de enviar la respuesta al navegador, podemos ejecutar dos enlaces de acción e insertar un nuevo header() :

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

El primero se ejecuta en todos los métodos, y el segundo es apuntar a métodos específicos. Aquí hay una implementación de la primera, con una forma comentada de encontrar la segunda:

 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 );

En WordPress goto plugins> JSON API> Editar

Desde la selección de archivos de la mano derecha, seleccione

json-api / singletons / api.php

Tendrá que añadir la siguiente línea

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

Tu código debería verse similar a esto una vez hecho. La adición de esta línea en cualquier otro lugar podría no funcionar como se esperaba.

 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() { 

Para cualquier persona que tenga este problema con múltiples orígenes.

En su servidor que aloja su sitio de wordpress, navegue a ../wp-content/plugins/json-rest-api y desde aquí abra el archivo plugin.php.

En esta funcion

 function json_send_cors_headers( $value ) {..} 

Cambiar el encabezado

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

A

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

Espero que esto ayude a cualquiera que estuviera incurriendo en los mismos problemas que yo.