flask + ngrok - redirect不起作用

时间:2017-11-06 23:20:57

标签: python http flask ngrok

我有以下应用:

server.py

@app.route('/')
    def main():
    return render_template('index.html')

@app.route('/login')
    def login():
    return 'hey'

的index.html

<body>
 <form action="http://localhost:5000/login" , method="post">
 <input type="submit" value="submit">
</body>

现在我运行ngrok:

ngrok http 5000

在网页浏览器中键入地址(由ngrok生成)后,我可以看到带有按钮的index.html页面,但是当我按下按钮时,它会将我重定向到http://localhost:5000/login我可以看到:&#34;连接被拒绝& #34 ;. 我的问题是如何以他们可以沟通的方式设置ngrok和flask服务器?

P.S。我只是为了更好的阅读而只放了一部分代码

4 个答案:

答案 0 :(得分:0)

如果将 col_a col_b col_c 0 a3 b3 c3 方法添加到登录路由

,会发生什么
POST

并将表单操作更改为

@app.route('/login', methods=['POST'])
def login():
    return 'hey'

HM?

答案 1 :(得分:0)

尝试更改您的应用主机。

app.run(host='0.0.0.0')

然后运行命令ngrok http 5000

还为您的路线添加POST方法。

@app.route('/login', methods=['POST'])
def login():
 return 'hey'

答案 2 :(得分:0)

是的,我已经想出了如何以其他方式做到这一点。运行命令后:

ngrok http 5000

感谢这个python脚本,我得到了ngrok地址:

import json
import os

def get_ngrok_address():
    os.system("curl  http://localhost:4040/api/tunnels > tunnels.json")

    with open('tunnels.json') as data_file:
        datajson = json.load(data_file)

return dict(zip(['http', 'https'], [i['public_url'] for i in datajson['tunnels']]))

它只是获取json对象并将其转换为python dict:

'http' -> ngrok_http_address
'https' -> ngrok_https_address

在服务器启动之前,我将生成的地址传递给所有html模板e.x。:

<body>
  <form action="{{ ngrok_address }}/login", method="post">
  <input type="submit" value="submit">
</body>

答案 3 :(得分:0)

尝试Flask-PyNgrok将ngrok用作flask应用程序扩展。