IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Symfony 5 Mercure Failed to send an update HTTP/1.1 401 Unauthorized returned for "http://127.0.0.1:8000/.well


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 11
    Points : 14
    Points
    14
    Par défaut Symfony 5 Mercure Failed to send an update HTTP/1.1 401 Unauthorized returned for "http://127.0.0.1:8000/.well
    Bonjour,
    je crée actuellement une application PHP avec l'utilisation de Symfony5 et Docker.
    j'ai essaye de suivre quelque tutoriel(déprécier) et la documentation mais j'ai beaucoup de mal a mettre le système en place.

    j'ai suivi les recommandation de la documentation https://symfony.com/doc/5.4/mercure.html.
    j'ai donc installer mercure grâce a la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    composer require mercure
    j'ai ensuite modifier les variable environement:
    .env
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ###> symfony/mercure-bundle ###
        # See https://symfony.com/doc/current/mercure.html#configuration
        # The URL of the Mercure hub, used by the app to publish updates (can be a local URL)
        MERCURE_URL=http://127.0.0.1:8000/.well-known/mercure
        # The public URL of the Mercure hub, used by the browser to connect
        MERCURE_PUBLIC_URL=http://127.0.0.1:8000/.well-known/mercure
        # The secret used to sign the JWTs
        MERCURE_JWT_SECRET="secret"
    ###< symfony/mercure-bundle ###
    j'ai modifier les URL par http au lieu de https car j avais une erreur SSL connect error for “https://127.0.0.1:8000/.well-known/mercure” car je pense que mon application est en http pour le moment et ne genere pas de certificat ssl pour communiquer avec le hub.

    j ai modifié mon MERCURE_JWT_SECRET en utilisant https://jwt.io/ en ajoutant au payload :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
      "mercure": {
        "publish": ["*"]
      }
    }
    et ma clé secrète dans la zone de saisie (VERIFY SIGNATURE) your-256-bit-secret, que j'ai ensuite ajouter à MERCURE_JWT_SECRET.


    j'ai ensuite crée un fichier js sur la page ou je souhaite recevoir les notifications.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const eventSource = new EventSource('http://127.0.0.1:8000/.well-known/mercure?topic=' + encodeURIComponent('http://127.0.0.1:8000/commande/recapitulatif'),
        );
    eventSource.onmessage = event => {
        // Will be called every time an update is published by the server
        alert("Commande");
        console.log(JSON.parse(event.data));
    }
    je souhaite envoyer une notification lorsqu'un utilisateur accède a la page http://127.0.0.1:8000/commande/recapitulatif.

    j'ai donc ajouter ce code dans le contrôleur de la page en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $update = new Update(
                'http://127.0.0.1:8000/commande/recapitulatif',
                json_encode(['status' => 'Commande'])
            );
     
            $hub->publish($update);
    ma page qui écoute les notification apparemment me crée bien une connexion avec le hub et renvoie une réponse 200.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Request URL: http://127.0.0.1:8000/.well-known/mercure?topic=http%3A%2F%2F127.0.0.1%3A8000%2Fcommande%2Frecapitulatif
    Request Method: GET
    Status Code: 200 OK
    Remote Address: 127.0.0.1:8000
    Referrer Policy: strict-origin-when-cross-origin
    le log de ma page qui recois les notification me donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Application] Jun 26 17:33:45 |DEBUG  | SECURI Stored the security token in the session. key="_security_main"
    [Web Server ] Jun 26 19:33:45 |INFO   | SERVER GET  (200) /favicon.ico ip="127.0.0.1"
    [Application] Jun 26 17:33:46 |INFO   | REQUES Matched route "_wdt". method="GET" request_uri="http://127.0.0.1:8000/_wdt/8f2711" route="_wdt" route_parameters={"_controller":"web_profiler.controller.profiler::toolbarAction","_route
    ":"_wdt","token":"8f2711"}
    [Web Server ] Jun 26 19:33:47 |INFO   | SERVER GET  (200) /_wdt/8f2711 ip="127.0.0.1"
    par contre lorsque j'essaye de me connecter a la page qui dois crée la notification http://127.0.0.1:8000/commande/recapitulatif j'obtiens une erreur <<failed to send an update>> et un autre message <<HTTP/1.1 401 Unauthorized returned for "http://127.0.0.1:8000/.well-known/mercure".>>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [Application] Jun 26 20:11:41 |INFO   | HTTP_C Request: "POST http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 26 20:11:41 |INFO   | HTTP_C Response: "401 http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 26 20:11:41 |CRITICA| REQUES Uncaught PHP Exception Symfony\Component\Mercure\Exception\RuntimeException: "Failed to send an update." at C:\laragon\www\Projet\Restaurant\RelaisDesVoutes\vendor\symfony\mercure\src\H
    ub.php line 104
    [Application] Jun 26 20:11:41 |DEBUG  | SECURI Stored the security token in the session. key="_security_main"
    [Web Server ] Jun 26 22:11:41 |ERROR  | SERVER POST (500) /commande/recapitulatif host="127.0.0.1:8004" ip="127.0.0.1" scheme="https"
    [Application] Jun 26 20:13:07 |INFO   | REQUES Matched route "order_recap". method="POST" request_uri="http://127.0.0.1:8000/commande/recapitulatif" route="order_recap" route_parameters={"_controller":"App\\Controller\\OrderControll
    er::add","_route":"order_recap"}
    j'ai essayer d'ajouter dicovery comme la doc parle afin d'ajouter des autorisations mon envoie enfin je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $discovery->addLink($request);
     
                $response = new JsonResponse([
                    '@id' => 'http://127.0.0.1:8000/commande/recapitulatif',
                    'status' => 'Order',
                ]);
     
                $response->headers->setCookie(
                    $authorization->createCookie($request, ['http://127.0.0.1:8000/commande/recapitulatif'])
                );
    et modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $update = new Update(
                    'http://127.0.0.1:8000/commande/recapitulatif',
                    json_encode(['status' => 'Commande']), true
                );
     
                $hub->publish($update);
    avec true pour ajouter l'authorisation, ainsi que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const eventSource = new EventSource('http://127.0.0.1:8000/.well-known/mercure?topic=' + encodeURIComponent('http://127.0.0.1:8000/commande/recapitulatif'), {
            withCredentials: true
        }
        );
    eventSource.onmessage = event => {
        // Will be called every time an update is published by the server
        alert("Commande");
        console.log(JSON.parse(event.data));
    l'option withCredientials.

    maintenant j'obtiens ce log:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [Application] Jun 26 20:18:13 |INFO   | HTTP_C Request: "POST http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 26 20:18:13 |INFO   | HTTP_C Response: "401 http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 26 20:18:13 |CRITICA| REQUES Uncaught PHP Exception Symfony\Component\Mercure\Exception\RuntimeException: "Failed to send an update." at C:\laragon\www\Projet\Restaurant\RelaisDesVoutes\vendor\symfony\mercure\src\H
    ub.php line 104
    [Application] Jun 26 20:18:13 |DEBUG  | SECURI Stored the security token in the session. key="_security_main"
    [Web Server ] Jun 26 22:18:14 |ERROR  | SERVER POST (500) /commande/recapitulatif host="127.0.0.1:8004" ip="127.0.0.1" scheme="https"
    Je ne suis absolument pas sur de tous ce que je viens de détailler et j'espère que je ne suis pas trop loin du compte.
    Si vous avez besoin de plus d'information n'hésiter pas a demander.

    Si quelqu'un peux m'aider en m'expliquant mon erreur je vous en remercie d'avance.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Bonjours,
    apres plusieur essaye je me demande si mon probleme ne viens pas du fait que mon application soit en http et non pas en https meme si j'ai modifié les variables d'environements pour qu'elle soit en https le probleme ne ce resolve pas.
    Si quelqu'un peux m'aiguiller avec ce probleme merci d'avance.
    mon dernier log:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [Application] Jun 27 14:37:36 |INFO   | HTTP_C Request: "POST http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 27 14:37:36 |INFO   | HTTP_C Response: "401 http://127.0.0.1:8000/.well-known/mercure"
    [Application] Jun 27 14:37:36 |CRITICA| REQUES Uncaught PHP Exception Symfony\Component\Mercure\Exception\RuntimeException: "Failed to send an update." at C:\laragon\www\Projet\Restaurant\RelaisDesVoutes\vendor\symfony\mercure\src\H
    ub.php line 104
    [Application] Jun 27 14:37:36 |DEBUG  | SECURI Stored the security token in the session. key="_security_main"
    [Web Server ] Jun 27 16:37:36 |INFO   | MERCUR Topic selectors not matched, not provided or authorization error
    [Web Server ] Jun 27 16:37:36 |WARN   | SERVER POST (401) /.well-known/mercure host="127.0.0.1:8004" ip="127.0.0.1" scheme="https"
    [Web Server ] Jun 27 16:37:37 |ERROR  | SERVER POST (500) /commande/recapitulatif
    [Web Server ] Jun 27 16:46:53 |DEBUG  | MERCUR write timeout: close the connection
    [Web Server ] Jun 27 16:46:53 |INFO   | MERCUR Subscriber disconnected
    [Web Server ] Jun 27 16:46:53 |INFO   | SERVER GET  (200) /.well-known/mercure?topic=http%3A%2F%2F127.0.0.1%3A8000%2Fcommande%2Frecapitulatif ip="127.0.0.1"
    [Web Server ] Jun 27 16:46:56 |INFO   | MERCUR New subscriber

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2014, 22h16
  2. Réponses: 1
    Dernier message: 07/10/2013, 10h59
  3. Requête update dans une boucle for
    Par boubounagh dans le forum JDBC
    Réponses: 3
    Dernier message: 13/01/2012, 14h18
  4. Réponses: 0
    Dernier message: 05/12/2009, 11h42
  5. Update avec variable contenant une quote
    Par NejNej dans le forum Développement
    Réponses: 2
    Dernier message: 13/11/2009, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo