curl可以在本地主机上工作,但不能远程工作

2024-09-30 18:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一小段代码:

from flask import Flask
from flask_restful import Resource, Api
import subprocess

app = Flask(__name__)
api = Api(app)

class SlackReport(Resource):
    def get(self):

        subprocess.Popen(['python', 'ingestion_ice3_check.py'])

        return 'Request submitted'

api.add_resource(SlackReport, '/slackReport')

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

如果我执行:

^{pr2}$

服务器发送响应,但如果我从同一LAN中的另一台计算机执行相同的命令,则会收到一条“拒绝连接”消息

$ curl -X GET http://10.113.12.20:5000/slackReport
curl: (7) Failed to connect to 10.113.12.20 port 5000: Connection refused

如果我从本地主机请求资源,我可以看到来自服务器调试控制台的请求

127.0.0.1 - - [28/Sep/2017 18:15:02] "GET /slackReport HTTP/1.1" 200 -

但是,如果我从远程机器请求相同的资源,我可以看到端口上的数据包,但是flask服务器没有接收到任何信息。在

$ sudo tcpdump -i ens192 port 5000
18:17:53.132514 IP 10.113.12.25.37096 > tl020dash.commplex-main: Flags [S], seq 3147843104, win 14600, options [mss 1460,sackOK,TS val 822032144 ecr 0,nop,wscale 7], length 0

这是netstat命令的输出

sudo netstat -tnlp | grep :5000
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      21872/python

Tags: namefromimport命令apiappflaskmain
1条回答
网友
1楼 · 发布于 2024-09-30 18:35:26

您正在本地主机(127.0.0.1)上运行服务,因此只有您的计算机可以访问它。如果你想运行Flask服务,让你的网络上的其他东西可以访问它,你可以在运行你的应用程序时设置一些关键字参数。您可能需要以提升的用户身份运行它,以便它能够绑定到该网络端口(10.113.12.20:5000)。

if __name__ == '__main__':
    app.run(debug=True, host='10.113.12.20', port=5000)

相关问题 更多 >