C'est assez nouveau d'utiliser n'importe quelle application Web, et j'ai essayé de créer lentement un bot de messagerie instantanée Facebook. Lorsque j'essaie d'utiliser ngrok, je ne peux pas visiter l'adresse qui m'a été donnée, c'est-à-dire:
ngrok http 5000
est ce que je mets dans la ligne de commande, et il retourne ceci:
ngrok by @inconshreveable
Session Status online
Version 2.1.18
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://ea986ca5.ngrok.io -> localhost:5000
Forwarding https://ea986ca5.ngrok.io -> localhost:5000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
Mais quand je prends l'adresse ' https://ea986ca5.ngrok.io ' comme le requiert la page du développeur de Facebook, elle indique:
The connection to http://ea986ca5.ngrok.io was successfully tunneled to your
ngrok client, but the client failed to establish a connection to the local
address localhost:5000.
Make sure that a web service is running on localhost:5000 and that it is a
valid address.
The error encountered was: dial tcp [::1]:5000: connectex: No connection
could be made because the target machine actively refused it.
Est-ce un problème avec mon port local? Merci!
Tout comme @ njzk2 aurait dû le dire, si vous n'avez pas de serveur Web en cours d'exécution, cela ne peut pas fonctionner. Je voudrais que ce soit plus clair pour vous, si vous êtes toujours confus.
Ce que ngrok fait, est de rendre votre serveur local (fonctionnant sur localhost) accessible au monde extérieur (reste de l’Internet). En soi, ce n'est pas un serveur Web. Donc, pour votre développement de bot, vous devez avoir un serveur Web fonctionnant sur un port défini (qui est dans votre cas 5000). Ensuite, vous pouvez pointer ngrok sur ce port afin qu’il redirige les demandes envoyées à votre adresse publique vers le programme exécuté sur ce port . Le serveur Web acceptera et traitera les demandes de Facebook.
Cela a fonctionné pour moi
ngrok.exe http -Host-header = réécrire localhost:
par exemple, ngrok.exe http -Host-header = réécrire localhost: 5219
J'utilise Visual Studio 2017, je ne sais pas si cela n'a aucun effet.
Si vous essayez d'utiliser ngrok pour pointer sur une URL https localhost, configurez un proxy.
voir ce commentaire de problème github:
https://github.com/inconshreveable/ngrok/issues/448#issuecomment-414214242
Dans mon cas, c'était le projet dans Visual Studio 2017. Net Core 2.1 avait été créé pour utiliser https avec un certificat auto-signé. Si vous n'avez pas besoin que votre hôte local soit https, alors ce qui a été résolu, a été de créer un nouveau projet Web et de décocher https. Lorsque vous exécutez ngrok (ngrok http numéro-de-port-à partir de IISExpress), il vous fournit une URL https que vous pouvez utiliser pour le développement.
Pour moi, le passage du protocole de http
à tls
a fonctionné puisque je ne transfère qu'une connexion sécurisée. Je n'avais pas besoin de réécrire l'en-tête.
Juste pour le contexte, je transmets une connexion à un conteneur de menu fixe en cours d'exécution sur Ubuntu 16.
PS: Vous continuez d’accéder à l’adresse en utilisant https dans le navigateur, pas en tls.
Essayez de définir explicitement l’IP localhost:
ngrok http 127.0.0.1:5000
au lieu de ngrok http 5000
Bonne chance!
Cette erreur peut se produire si vous avez une règle HTTP pour rediriger HTTP vers HTTPS.
Vous pouvez le désactiver pour votre ordinateur développeur ou ajouter une règle personnalisée basée sur l'en-tête X-Original-Host
:
J'utilise le plug-in de réécriture IIS et voici comment je l'ai corrigé
<rule name="Redirect to https" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" negate="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" />
<add input="{HTTP_X_Original_Host}" pattern="yourngrokname.ngrok.io" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}{REQUEST_URI}" redirectType="Found" />
</rule>