Appel à lancer des nœuds wotwizard

Mais c’est pas disponible dans l’extension Firefox ça, si ? Je ne trouve pas. Ça doit être dans l’appli Altair Graphql que je n’ai pas installée. C’est ça ?

EDIT: Ah ça y est en retournant une nième fois dans les paramètres du plugin Firefox je trouve enfin l’option pour ajouter des plugins dans le plugin. Ça m’avait échappé jusque là. ¯_(ツ)_/¯

2 Likes

Oui l’UX de ce plugin est désastreuse, mais il est pratique et on va être amené à manipuler du graphql de plus en plus :slight_smile:

En soit j’aurais aussi pu te dire de simplement utiliser curl pour faire exactement la même chose:

curl -s 'https://wotwizard.pini.fr/graphql' \
  -H 'Content-Type: application/json' \
  --data-binary '{"query":"query IntrospectionQuery {__schema {queryType {fields {name description}}}}"}' \
  | jq -r '.data.__schema.queryType.fields[] | "Query: \(.name)\n\(.description)\n"'
2 Likes

@Pini j’ai une problème de CORS avec ton endpoint:

Access to fetch at 'https://wotwizard.pini.fr/' from origin 'http://localhost:3000' 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. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Il faut que tu rajoutes ça dans ta conf nginx, comme indiqué plus haut:

Je viens de mettre cette conf en place. Dis moi si ça a bien l’effet escompté.

pas tout à fait. Maintenant ça mouline, mais finit en timeout avec la même erreur:

Access to fetch at 'https://wotwizard.pini.fr/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Compare avec ma conf nginx plus haut, ça vient forcément d’une différence à ce niveau là.

L’effet escompté, c’est que cette erreur n’intervienne plus sur ton endpoint en prod: https://wotwizard.axiom-team.fr

:slight_smile:

Je n’ai pas assez d’info. Comment précisément je reproduis cette erreur ?

sur wotwizard-ui, le lien que je viens de te donner, tu sélectionnes ton noeud en regardant la console JS.

Seul le noeud axiom-team fonctionne correctement actuellement.

J’ai un doute. Dans ta conf nginx tu définis upstream sur le port 10050. Alors que j’ai 8080 pour ma conf. C’est parce que tu as bindé le port 8080 du service vers 10050 de l’hôte, ou bien j’ai loupé autre chose ?

Non c’est bien ma config particulière, il s’agit du port 8080 par default.

En rechargeant la page plusieurs fois, il y a un coup où ton noeud à réussi à charger et sortir le bon tableau, mais après un long moment, probablement juste avant le timeout.

Mais les fois suivantes retour en timeout.
Etrange.


Bon après te prends pas trop la tête non plus c’est pas urgent, si ça se trouve c’est du cache de je ne sais où, car je n’arrive pas à expliquer le pbm autrement … on verra plus tard ^^

sinon essai ça:

add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;

Je ne pense pas que ce soit un problème de permissions, mais effectivement un problème de timeout. Mes serveurs sont pauvres en ressources, et la requête met peut-être juste trop de temps à être traitée. Car en essayant plusieurs fois, comme toi j’ai fini par avoir une réponse correcte.

Sais-tu comment ce timeout pourrait être configuré ?

La seule différence de header que je vois entre nos conf est le keepalive:

$ curl -i -X POST -H "Origin: http://exemple.com" -H "Content-Type: application/json" -d '{"test":"data"}' https://gql.wotwizard.axiom-team.fr
                                                                                          
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 01 Apr 2024 10:28:43 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 34
Connection: keep-alive
Strict-Transport-Security: max-age=15768000
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type

{
	"errors":
		"No query string"
}%                                                                                                                                                                                                                                                                       

$ curl -i -X POST -H "Origin: http://exemple.com" -H "Content-Type: application/json" -d '{"test":"data"}' https://wotwizard.pini.fr

HTTP/2 200 
server: nginx/1.25.4
date: Mon, 01 Apr 2024 10:28:45 GMT
content-type: text/plain; charset=utf-8
content-length: 34
strict-transport-security: max-age=31536000
access-control-allow-origin: *
access-control-allow-headers: Content-Type

{
	"errors":
		"No query string"
}%               

Donc essai de rajouter ça à ton conf nginx:

keepalive_timeout 65;

J’ai ajouté :

proxy_read_timeout 180s;

et ça semble suffire pour que la requête passe à tous les coups.

2 Likes

On dirait bien :slight_smile:

C’est là qu’on se rends compte que wotwizard est assez gourmand.