2017-11-06 10 views
0

내가있어 다음과 같은 응용 프로그램을 작동하지 않습니다플라스크 + ngrok 리디렉션

ngrok http 5000 

주소 (ngrok에서 생성)를 웹에 입력 한 후 브라우저 버튼이있는 index.html 페이지를 볼 수 있지만 버튼을 누르면 http://localhost:5000/login으로 연결됩니다 : "connection refused". ngrok 및 flask 서버가 통신 할 수있는 방법을 설정하는 방법은 무엇입니까?

P. 난 그냥 더 나은 독서에 대한 내 코드의 일부를 넣어했습니다 당신이

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

에 양식 동작을 로그인 경로

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

POST 방법을 추가하고 변경하면 어떻게됩니까

답변

0

흠?

+0

여기에 'POST'를 쓰는 것을 잊어 버렸지 만 코드에 존재하므로 지금 수정하겠습니다. Btw 나는 시도 : action = "/ login"그리고 그것을 작동 :) 감사합니다 – Persi

0

신청 호스트를 변경하십시오.

app.run(host='0.0.0.0') 

다음은 또한 경로에 대한 POST 방법을 추가 명령 ngrok http 5000

를 실행합니다.

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

내 경로 args에 여기에 'POST'를 입력하는 것을 잊어 버렸지 만 그것은 내 코드에 존재합니다. 귀하의 솔루션은 잘 작동합니다. 고맙습니다! – Persi

+0

니스! 정확한 답으로 표시해주세요. 감사합니다! –

0

Btw, 나는 다른 방법으로 만드는 방법을 알아 냈습니다. 명령을 실행 한 후 :

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

서버 시작하기 전에 : 그것은 단지 JSON 객체를 얻고, 파이썬 딕셔너리로 ​​변환

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']])) 

:

ngrok http 5000 

을 나는이 파이썬 스크립트 ngrok 주소 감사를 얻을 수 생성 된 주소를 모든 HTML 템플릿에 전달합니다. 예 :

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