J'ai ce site wordpress avec un plugin appelé API JSON. Ce plugin fournit un format JSON pour le contenu qui se trouve dans wordpress. J'ai pu activer CORS sur wordpress en ajoutant un en-tête ("Access-Control-Allow-Origin: *"); sur l'en-tête php. Mais quand j'ai essayé l'URL fournie par le plugin JSON API, le CORS ne fonctionne plus.
C’est le site wordpress où j’ai fait les tests ... J’ai utilisé le site Web de test cors pour vérifier s’il fonctionnait bien et c’est ... http: //kiwa-app.loading. net/
Mais lorsque j'essaie avec l'URL fournie par l'API JSON, ne fonctionne plus. J'ai toujours le message d'erreur 'Access-Control-Allow-Origin' http://kiwa-app.loading.net/?json=info
Je vais aprécier de l'aide merci !!!
Ok j'ai enfin compris un moyen facile ...
Vous devez juste ajouter:
<? header("Access-Control-Allow-Origin: *"); ?>
Sur le fichier api.php, ce fichier se trouve dans wp-content/plugins/json-api/singletons/api.php.
J'espère que cela aide plus de gens avec le même problème!
J'ai utilisé quelques API WordPress différentes - mais pour ceux d'entre vous qui utilisez le "officiel" WP-API , j'ai eu beaucoup de problèmes avec ce CORS --- et ce que j'ai trouvé était entre les. approche htaccess et quelques autres je suis tombé sur ... ajouter cela à votre thème functions.php a fonctionné mieux.
function add_cors_http_header(){
header("Access-Control-Allow-Origin: *");
}
add_action('init','add_cors_http_header');
Assurez-vous de ne pas utiliser ces combinaisons (.htaccess, header.php, api.php, functions.php), car cela vous mettra en colère.
Avant que la réponse ne soit envoyée au navigateur, nous pouvons exécuter deux crochets d'action et insérer un nouveau header()
:
do_action("json_api", $controller, $method);
do_action("json_api-{$controller}-$method");
La première s'exécute sur toutes les méthodes et la seconde consiste à cibler des méthodes spécifiques. Voici une implémentation de la première, avec un moyen commenté de trouver la seconde:
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 );
Dans les plugins wordpress goto> API JSON> Modifier
Dans la sélection de fichier de droite, sélectionnez
json-api/singletons/api.php
Vous devrez ajouter la ligne suivante
en-tête ("Access-Control-Allow-Origin: *");
Votre code devrait ressembler à ceci une fois terminé. L'ajout de cette ligne n'importe où ailleurs pourrait ne pas fonctionner comme prévu.
<?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() {
Dans le projet wordpress, allez dans le fichier suivant et faites comme ça
Dans we-includes/rest-api.php, changez header( 'Access-Control-Allow-Origin: ' . $Origin );
en header( 'Access-Control-Allow-Origin: *');
.
Dans we-includes/http.php, remplacez header( 'Access-Control-Allow-Origin: ' . $Origin );
par header( 'Access-Control-Allow-Origin: *');
.
Pour tous ceux qui ont ce problème avec plusieurs origines
Sur votre serveur hébergeant votre site wordpress, accédez à la page ../wp-content/plugins/json-rest-api et ouvrez le fichier plugin.php.
Dans cette fonction
function json_send_cors_headers( $value ) {..}
Changer l'en-tête
header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $Origin ) );
À
header( 'Access-Control-Allow-Origin: *' );
J'espère que cela aide tous ceux qui ont les mêmes problèmes que moi.