1.允许同一个局域网访问
默认情况下,**`http://127.0.0.1:5000` 这个网址是不能在其他计算机上访问的**。
下面详细解释原因以及如何让其他计算机可以访问。
❌ 为什么别人访问不了?
-
`127.0.0.1` 是 **本地回环地址(localhost)**,它只在你自己的电脑上有效。
-
它的意思是:"本机自己",**仅限本机访问**。
-
Flask 默认启动时绑定的是 `127.0.0.1`,所以只有你自己的电脑能访问这个网页。
✅ 如何让其他电脑也能访问?
你需要做两件事:
✅ 1. 修改 Flask 启动时的主机地址
在 `app.py` 中,把:
```python
app.run(debug=True)
```
改成:
```python
app.run(host='0.0.0.0', port=5000, debug=True)
```
🔍 解释:
-
`host='0.0.0.0'`:表示接受来自**任何网络接口**的请求(即允许外网访问)。
-
`port=5000`:端口号(可省略,默认就是 5000)。
-
`debug=True`:开发模式,保留即可。
✅ 2. 获取你电脑的局域网 IP 地址
在其他电脑上访问,需要用你的电脑在局域网中的 IP,比如 `192.168.x.x` 或 `10.x.x.x`。
🖥️ 查看方法:
- **Windows**:
打开命令提示符,输入:
```bash
ipconfig
```
找到"IPv4 地址",如:`192.168.3.100`
- **Mac/Linux**:
打开终端,输入:
```bash
ifconfig
```
或(在某些 Linux 上):
```bash
ip addr show
```
找到类似 `inet 192.168.3.100` 的地址。
🌐 现在别人怎么访问?
假设你的电脑 IP 是 `192.168.3.100`,那么:
👉 其他电脑在浏览器中输入:
```
```
就能访问你的 Flask 网页了!
⚠️ 注意事项(安全提醒)
-
**仅限局域网内**:其他电脑必须和你连接在**同一个局域网**(比如同一个 Wi-Fi)。
-
**防火墙设置**:某些系统或杀毒软件会阻止外部访问 5000 端口。如果无法访问,检查防火墙是否放行了该端口。
-
**不要在生产环境使用 `host='0.0.0.0'`**:这只是开发调试用的。正式上线应使用 Nginx + Gunicorn 等专业部署方式。
-
**关闭 debug 模式(上线时)**:`debug=True` 有安全风险,仅用于开发。
✅ 总结
| 问题 | 解决方法 |
|------|----------|
| 别人访问不了? | 改 `app.run(host='0.0.0.0')` |
| 用什么地址访问? | `http://你的局域网IP:5000`,如 `http://192.168.3.100:5000` |
| 必须同网络? | 是的,必须在同一局域网 |
| 安全吗? | 开发调试可以,不要用于公网或敏感环境 |
✅ 修改后 `app.py` 的关键部分应为:
```python
if name == 'main':
app.run(host='0.0.0.0', port=5000, debug=True)
```
然后其他设备访问你的 **局域网 IP + 端口** 即可!
2.局域网
**通常情况下,两台计算机连接不同的 Wi-Fi 网络,是不在同一个局域网的。**
下面详细解释:
❌ 为什么"不同 Wi-Fi"通常 ≠ 同一个局域网?
局域网(Local Area Network, LAN)是指**在物理位置上接近的设备通过交换机或路由器连接起来的小范围网络**,比如你家或办公室里的所有设备。
当你连接不同的 Wi-Fi 时,通常意味着:
| 情况 | 是否在同一个局域网 |
|------|------------------|
| 📶 两台电脑连的是同一个路由器的 Wi-Fi(哪怕一个叫 `Home-WiFi`,一个叫 `Home-Guest`) | ✅ 通常是,但要看配置 |
| 📶 两台电脑连的是不同地点的 Wi-Fi(如:你在家连"中国移动",朋友在公司连"Office-WiFi") | ❌ **不是**同一个局域网 |
| 📶 两台电脑连的是同一个路由器的不同频段(2.4G 和 5G) | ✅ 是同一个局域网 |
| 📶 两台电脑连的是两个不同的路由器(即使在同一房间) | ❌ 通常不是,除非路由器之间做了桥接或主从设置 |
✅ 什么情况下"不同 Wi-Fi"也能在同一个局域网?
有几种**特殊情况**可以让连接不同 Wi-Fi 的设备处于同一局域网:
1. **同一个路由器的多个 Wi-Fi 名称(SSID)**
-
例如:一个路由器设置了两个 Wi-Fi:
-
`MyHome`
-
`MyHome-Guest`
-
虽然名称不同,但它们来自**同一个网络设备**,设备之间通常可以互相访问(Guest 网络可能被隔离)。
2. **多个路由器做了"组网"或"桥接"**
-
比如你家有主路由器 + 一个作为"桥接模式"的副路由器,扩展 Wi-Fi 信号。
-
如果配置正确,所有设备都在同一个子网(如 `192.168.1.x`),就属于同一个局域网。
3. **企业级网络或校园网**
-
学校或公司可能有多个 Wi-Fi 接入点(AP),但后端是统一的交换机和路由器。
-
所有设备虽然连了不同的热点,但仍在同一个逻辑局域网中。
🧪 如何判断是否在同一个局域网?
你可以通过以下方法判断:
方法 1:看 IP 地址是否在同一网段
-
电脑 A 的 IP:`192.168.1.100`
-
电脑 B 的 IP:`192.168.1.101`
-
✅ 是同一网段(前3段相同),**很可能在同一局域网**
-
电脑 A 的 IP:`192.168.1.100`
-
电脑 B 的 IP:`10.0.0.50`
-
❌ 不同网段,**不在同一局域网**
> 查看 IP 方法:
> - Windows:`ipconfig`
> - Mac/Linux:`ifconfig` 或 `ip addr`
方法 2:尝试 `ping` 测试
在电脑 A 上执行:
```bash
ping 192.168.1.101
```
如果能通(收到回复),说明大概率在同一局域网。
🌐 那如果不在同一个局域网,怎么让 Flask 被访问?
如果你希望**跨网络**(比如异地)访问你的 Flask 应用,有几种方式:
| 方法 | 说明 |
|------|------|
| 🔁 内网穿透(推荐) | 使用工具如 [ngrok](https://ngrok.com)、[localtunnel](https://theboroer.github.io/localtunnel/),生成一个公网地址,转发到你的本地服务 |
| ☁️ 部署到云服务器 | 把 Flask 项目部署到阿里云、腾讯云、VPS 等,别人通过公网 IP 访问 |
| 📱 手机热点共享 | 让另一台电脑连你的手机热点,变成同一网络 |
✅ 总结
| 问题 | 回答 |
|------|------|
| 连不同 Wi-Fi 是同一个局域网吗? | ❌ **通常不是** |
| 什么时候是? | 同一网络设备分出的多个 Wi-Fi,或做了网络桥接 |
| 如何判断? | 看 IP 是否在同一网段,或用 `ping` 测试 |
| 想让别人访问 Flask? | 改 `host='0.0.0.0'` + 用局域网 IP 访问,或使用 **ngrok** 做内网穿透 |
如果你只是想让朋友临时访问你的网页,推荐使用 [ngrok](https://ngrok.com):
```bash
ngrok http 5000
```
它会生成一个像 `https://abc123.ngrok.io` 的地址,全世界都能访问你的本地 Flask 服务!
3。生成网址允许访问 ngrok
使用 **ngrok** 可以非常方便地将你本地运行的 Flask 服务(如 `http://127.0.0.1:5000`)公开到公网,让任何人通过一个临时的公网 URL 访问你的项目,无需部署到服务器。
下面是 **详细步骤**,适合初学者:
✅ 第一步:下载并安装 ngrok
1. 注册 ngrok 账号
-
打开官网:[https://ngrok.com](https://ngrok.com)
-
点击 **Sign Up** 免费注册一个账号。
2. 获取你的认证令牌(Authtoken)
-
登录后,进入仪表板:[https://dashboard.ngrok.com](https://dashboard.ngrok.com)
-
左侧点击 **Getting Started** → 你会看到类似:
```
ngrok config add-authtoken 2VdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
- 复制这行命令(你的令牌是唯一的)
✅ 第二步:安装 ngrok
方法一:直接下载(推荐新手)
-
进入下载页:[https://dashboard.ngrok.com/get-started/your-authtoken\](https://dashboard.ngrok.com/get-started/your-authtoken)
-
根据你的操作系统下载 ngrok:
-
Windows → `ngrok.exe`
-
Mac → `ngrok` (Intel 或 Apple Silicon)
-
Linux → 对应版本
- 解压后,得到一个可执行文件 `ngrok`
> 建议把它放在一个好找的文件夹,比如 `C:\ngrok\` 或 `~/ngrok/`
✅ 第三步:配置 ngrok(绑定你的账号)
打开终端(命令提示符 / Terminal),运行你复制的命令:
```bash
ngrok config add-authtoken 2VdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
✅ 这样 ngrok 就知道是你在使用,可以享受更多功能(如自定义子域名、查看请求日志等)。
✅ 第四步:启动你的 Flask 应用
确保你的 Flask 项目正在运行,并监听在 `5000` 端口(或其他端口)。
```bash
python app.py
```
> 确保 `app.run()` 没有绑定 `host='127.0.0.1'` 限制死,建议使用默认或 `host='0.0.0.0'`(可选,本地测试时非必须)
✅ 第五步:用 ngrok 暴露本地服务
在 **另一个终端窗口** 中,进入 ngrok 所在目录,运行:
```bash
ngrok http 5000
```
> 如果你的 Flask 服务运行在其他端口(如 8000),就写 `ngrok http 8000`
✅ 第六步:获取公网 URL
运行后你会看到类似输出:
```
ngrok by @inconshreveable
Session Status online
Account yourname@example.com
Version 3.0.0
Region United States (us)
Forwarding https://a1b2c3d4e5f6.ngrok.io -> http://localhost:5000
Forwarding http://a1b2c3d4e5f6.ngrok.io -> http://localhost:5000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
```
📌 复制这个 URL(如 `https://a1b2c3d4e5f6.ngrok.io`),发给任何人,他们就可以在浏览器中访问你的 **本地 Flask 项目**!
✅ 效果演示
| 地址 | 作用 |
|------|------|
| `https://a1b2c3d4e5f6.ngrok.io` | 外界访问你本地 `http://127.0.0.1:5000` 的公网入口 |
| `http://127.0.0.1:4040` | ngrok 内置的 **请求监控面板**(可查看每次访问的请求和响应) |
> 💡 打开 `http://127.0.0.1:4040` 可以看到实时请求日志,调试超方便!
✅ 注意事项
| 项目 | 说明 |
|------|------|
| 🔒 安全性 | 免费版 URL 是随机的,别人猜不到,相对安全 |
| 🕒 临时性 | 关闭 ngrok 后链接失效;下次运行会生成新 URL |
| 🚫 不适合生产 | 仅用于演示、调试、远程测试 |
| 💎 高级功能 | 付费版支持自定义域名、密码保护、TCP 隧道等 |
| 🐍 其他服务 | 同样适用于 FastAPI、Django、本地文件服务器等 |
✅ 示例:完整流程(以 Windows 为例)
```cmd
:: 1. 启动 Flask
python app.py
:: 2. 新开一个终端,启动 ngrok
C:\ngrok\ngrok.exe http 5000
```
→ 得到公网地址 → 分享给朋友 → 完成!
✅ 替代工具(如果 ngrok 被墙或限速)
-
\*\*localtunnel\*\*\](https://theboroer.github.io/localtunnel/)(免费,无需注册)
npx localtunnel --port 5000
```
-
\*\*serveo.net\*\*\](https://serveo.net)(SSH 方式)
ssh -R 80:localhost:5000 serveo.net
```
✅ **总结:用 ngrok 把本地服务公开到公网,只需 4 步:**
-
注册账号 → 获取 Authtoken
-
下载 ngrok → 配置令牌
-
启动 Flask → `python app.py`
-
运行 `ngrok http 5000` → 分享生成的 URL
👉 现在,哪怕你在家里,朋友在另一个城市,也能访问你的"大学生信息查询系统"了!