transition-bibliographique / poc-fne

Preuve de concept basée sur Wikibase pour le "Fichier National d'Entités" (Abes/BNF). Projet réalisé en 2019.
http://www.abes.fr/Autorites-et-referentiels/Projet-FNE-Fichier-National-d-Entites
4 stars 1 forks source link

l'autocomplete sur le Query Service échoue du fait de Cross-Origin headers manquant #224

Closed maxlath closed 5 years ago

maxlath commented 5 years ago

Quand on essaye d'utiliser l'autocomplete des entités depuis https://poc-fne-query.abes.fr, l'autocomplete échoue et la console affiche une erreur de ce type :

Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://poc-fne.abes.fr/w/api.php?action=wbsearchentities&fo…ack=jQuery34105694125202697381_1569844491440&_=1569844491456. Raison : l’en-tête CORS « Access-Control-Allow-Origin » est manquant.

Une solution serait d'ajouter les headers manquant depuis le reverse proxy (Apache si j'ai bien compris ?)

Access-Control-Allow-Origin: https://poc-fne-query.abes.fr
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type

de sorte que les requêtes faites à https://poc-fne.abes.fr depuis https://poc-fne-query.abes.fr ne soit pas rejeté par le navigateur

Documentation sur les headers Access-Control-Allow-Origin

kerphi commented 5 years ago

Pour mémo voici la démarche réalisée.

1) Le premier message d'erreur rencontré est le suivant :

[...] has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Comme suggéré par @maxlath, la configuration apache qui permet de le corriger est la suivante :

        Header set Access-Control-Allow-Origin "*"
        Header set Access-Control-Allow-Methods "GET"
        Header set Access-Control-Allow-Headers "Content-Type"

2) Mais un second message d'erreur apparaît alors :

[...] has been blocked by CORS policy: Request header field x-requested-with is not allowed by Access-Control-Allow-Headers in preflight response.

La configuration apache qui permet de le corriger complètement l'erreur est la suivante :

        # SGY: pour permettre a https://poc-fne-query.abes.fr/ de faire des requetes AJAX
        #      sur https://poc-fne.abes.fr
        # cf https://github.com/abes-esr/poc-fne/issues/224
        Header set Access-Control-Allow-Origin "*"
        Header set Access-Control-Allow-Methods "GET"
        Header set Access-Control-Allow-Headers "Content-Type, X-Requested-With"
kerphi commented 5 years ago

Le problème est normalement corrigé.

maxlath commented 5 years ago

@kerphi top, merci !