"Il y a des problèmes de compatibilité entre Mercure, Symfony et Vue"
P粉023650014
P粉023650014 2023-08-26 12:58:16
0
1
585
<p>J'ai un problème pour configurer Mercure avec Vue et Symfony. J'utilise le hub Mercure connecté à Symfony cli. Dans le fichier .env, j'ai modifié l'url de Mercure pour qu'elle utilise http car cela provoquerait des erreurs de certificat (fournies par symfony). </p> <p><strong>.env</strong></p> <pre class="brush:php;toolbar:false;">MERCURE_URL=http://localhost:8000/.well-known/mercure MERCURE_PUBLIC_URL=http://localhost:8000/.well-known/mercure MERCURE_JWT_SECRET="!ChangeMe!"</pre> <p>Lorsque j'ouvre l'application symfony dans le navigateur (par exemple http://localhost:8000) et que j'ajoute le script suivant dans la console pour tester : </p> <pre class="brush:php;toolbar:false;">const eventSource = new EventSource('http://localhost:8000/.well-known/mercure?topic=' + encodeURIComponent('http:// exemple.com/books/1')); eventSource.onmessage = event => // Cette fonction est appelée à chaque fois que le serveur publie une mise à jour console.log(JSON.parse(event.data)); }</pré> <p>Cela fonctionne et je peux publier quelques modifications dans d'autres onglets. Cependant, lorsque je fais la même chose dans mon application vue située à l'adresse http://localhost:8080, la console affiche l'erreur suivante : </p> <pre class="brush:php;toolbar:false;">Accès à la ressource sur 'http://localhost:8000/.well-known/mercure?topic=http://example.com/books/1 ' de l'origine 'http://localhost:8080' a été bloqué par la stratégie CORS : aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée.</pre> <p>J'ai également deux autres questions :</p> <ol> <li>Pourquoi est-ce que j'obtiens une erreur 401 lorsque je colle le jeton jwt dans l'environnement, mais pas lorsque j'utilise le jeton jwt ci-dessus ? ≪/li> <li>Pourquoi ne puis-je pas utiliser Symfony Serve avec https ? J'ai rencontré l'erreur « TransportException : fopen() : Impossible de localiser le certificat CN ». ≪/li> </ol></p>
P粉023650014
P粉023650014

répondre à tous(1)
P粉445750942

Cela est dû à CORS car VueJS s'exécute sur un domaine différent de celui sur lequel Mercure est installé.
J'utilise Mercure avec Docker compose, mais si vous le lancez depuis CLI, essayez d'ajouter --cors-allowed-origins='http://localhost:8000 http://localhost:8080'

Autre question 1 : je pense que vous devriez utiliser la même clé en configuration .env et mercure

  • à .env中:MERCURE_JWT_SECRET="Secret123"
  • Au démarrage de Mercure : --jwt-key='Secret123'
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal