Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/10/2018, à 15:12

Blackdruid

Wordpress, Nginx, RSS et CORS

Salut,

J'ai un wordpress qui tourne sous Nginx et un autre site à partir duquel je souhaiterais consommer le flux RSS du wordpress depuis le browser en JavaScript.
Je tombe donc en plein dans le Cross-Origin Resource Sharing (CORS).

Je voudrais donc autoriser l'accès au flux RSS (et uniquement au flux RSS) pour les requêtes en provenance de monsite.fr (et de localhost). J'ai donc ajouté la règle suivante dans ma config wordpress Nginx :

location / {
       try_files $cachefile $uri $uri/ /index.php?$args;
}

location ~ /(feed|rss|atom)$ {
       set $cors '';
       if ($http_origin ~ '^https?://(localhost|monsite\.fr)') {
               set $cors 'true';
       }
       if ($cors = 'true') {
               more_set_headers 'Access-Control-Allow-Origin: $http_origin';
               more_set_headers 'Access-Control-Allow-Methods: GET';
       }
       try_files $cachefile $uri $uri/ /index.php?$args;
}

Mais ça ne fonctionne pas bien.

En accédant directement au flux RSS (URL dans la barre d'adresse) c'est OK.

Lorsque mon code JQuery tente un GET depuis un serveur local, je vois bien les entêtes Access-Control-Allow-Origin pour localhost et Access-Control-Allow-Methods dans la response mais Nginx me retourne un 404... Je comprends pas pourquoi.

Quelqu'un voit-il quelque chose que j'aurais oublié ?

Je vous remercie.

Hors ligne

#2 Le 17/10/2018, à 15:37

Blackdruid

Re : Wordpress, Nginx, RSS et CORS

Apparemment c'est le IF dans le bloc location qui n'est pas recommandé...
https://stackoverflow.com/questions/144 … 9#29113949

Hors ligne

#3 Le 17/10/2018, à 15:51

Blackdruid

Re : Wordpress, Nginx, RSS et CORS

Voici une solution qui fonctionne (à mettre directement dans le bloc server et non un bloc location) :

set $cors_host_allowed "";

if ($http_origin ~ "^https?://(localhost|monsite\.fr)$") {
        set $cors_host_allowed $http_origin;
}

add_header Access-Control-Allow-Origin "$cors_host_allowed" always;

Dernière modification par Blackdruid (Le 17/10/2018, à 23:28)

Hors ligne