将 Flask 和 Ngrok 用于 http://127.0.0.1:5000 时找不到 404

Posted

技术标签:

【中文标题】将 Flask 和 Ngrok 用于 http://127.0.0.1:5000 时找不到 404【英文标题】:404 Not Found when using Flask and Ngrok for http://127.0.0.1:5000 【发布时间】:2020-12-05 20:01:28 【问题描述】:

flask、ngrok 和 twilio 的初学者。我运行了这段 python 代码来为 twilio 创建一个烧瓶应用程序:

from flask import Flask, request, redirect
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/sms", methods=['GET', 'POST'])
def incoming_sms():
    """Send a dynamic reply to an incoming text message"""
    # Get the message the user sent our Twilio number
    body = request.values.get('Body', None)

    # Start our TwiML response
    resp = MessagingResponse()

    # Determine the right reply for this message
    if body == 'hello':
        resp.message("Hi!")
    elif body == 'bye':
        resp.message("Goodbye")

    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)

它托管在http://127.0.0.1:5000

然后我运行“ngrok http http://127.0.0.1:5000" 创建一个 ngrok 链接,但是当我使用它时,我得到 404 未找到。是什么导致了这个问题,我该如何解决?

更新:http://127.0.0.1:5000/sms 不起作用,显示空白页

【问题讨论】:

http://127.0.0.1:4040/sms 上你有什么? 您是按原样尝试 ngrok 链接,还是添加 /sms?如果你没有,它应该有 404'd,因为你没有'/'的路线。 我跑了代码,这次我发/sms的时候屏幕是空白的 右键单击您的网络浏览器并查看源代码,输出为 Twilio Markup Language (TwiML)。 嗨,当我尝试127.0.0.1:4040/sms 版本时,输出是 【参考方案1】:
1. Run ngrok 5000
2. Here is the flask code for generating, sending and validating OTP:

@app.route('/getOTP', methods=['GET', 'POST'])
def getOTP():
    mobNum = request.get_json().get("mobNum")
    length = len(mobNum)
    val = 0
    if length == 13 :
     val = getOTPApi(mobNum)
    elif length == '' or length < 12:
        message = "Failure"
        print(message)
        return message
         'ContentType':'application/json'
    if val:
          message = "Success"
          print(message)
          return message
    
    else:
        message = "NaN"
        print(message)
        return message
    

@app.route('/validateOTP', methods=['POST'])
def validateOTP():
    otp = request.get_json().get("otp")
    length = len(otp)
    if 'response' in session:
        s = session['response']
        
        if s == otp:
          message = "Success"
          print(message)
          return message
        elif length == 0 or length < 6:
          message = "NaN"
          print(message)
          return message
        else:
          message = "Failure"
          print(message)
          return message
    session.pop('response', None)  
    
    
def generateOTP():
        return random.randrange(100000, 999999)  
    
def getOTPApi(mobNum):
    account_sid = 'XXXxxXXXXXX'
    auth_token = 'XXXxxXXXXXX'
    client = Client(account_sid, auth_token)
    otp = generateOTP()
    session['response'] = str(otp)
    body = 'Your OTP is ' + str(otp)
    message = client.messages.create(
                              from_='+1123456789',
                              body=body,
                              to=mobNum
        
                                   )
    if message.sid:
        return True
    else:
        return False
    

【讨论】:

以上是关于将 Flask 和 Ngrok 用于 http://127.0.0.1:5000 时找不到 404的主要内容,如果未能解决你的问题,请参考以下文章

Alexa Skill Development 使用 flask-ask 和 ngrok 错误

flask+ngrok微信公众号搭建小试

flask + ngrok - 重定向不起作用

我可以获取flask_ngrok或py-ngrok生成的ip地址或域名并返回到127.0.0.1/

在 Google Colab 上通过 ngrok 运行烧瓶应用程序时,flask-ngrok 返回“隧道 _________.ngrok.io 未找到”[重复]

Ngrok 主机名 SSL 证书