Pages : 1
#1 Le 17/10/2018, à 14: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, à 14: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, à 14: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, à 22:28)
Hors ligne
Pages : 1