环境
| Debian12 |
| 192.168.2.102/24 |
| |
| rambo@mac:~$ cat /etc/apt/sources.list.d/debian.sources |
| Types: deb |
| URIs: https://mirrors.tuna.tsinghua.edu.cn/debian |
| Suites: bookworm bookworm-updates bookworm-backports |
| Components: main contrib non-free non-free-firmware |
| Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg |
| |
| |
配置前端服务器 (端口3000)
| rambo@mac:~$ sudo apt install -y nginx |
| rambo@mac:~$ sudo nginx -v |
| nginx version: nginx/1.22.1 |
| |
| |
| |
| rambo@mac:~$ sudo vim /etc/nginx/sites-available/frontend |
| server { |
| listen 3000; |
| |
| root /var/www/html; |
| index index.html; |
| |
| location / { |
| try_files $uri $uri/ =404; |
| } |
| } |
| |
| |
| |
| rambo@mac:~$ sudo vim /var/www/html/index.html |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>CORS Issue</title> |
| </head> |
| <body> |
| <h1>CORS Issue Example</h1> |
| <button id="fetchData">Fetch Data</button> |
| <script> |
| document.getElementById("fetchData").addEventListener("click", () => { |
| fetch("http://192.168.2.102:5000/api/data", { |
| method: "GET", |
| }) |
| .then(response => response.json()) |
| .then(data => console.log(data)) |
| .catch(error => console.error("Error:", error)); |
| }); |
| </script> |
| </body> |
| </html> |
| |
配置API服务器 (端口5000)
| rambo@mac:~$ sudo vim /etc/nginx/sites-available/api |
| server { |
| listen 5000; |
| |
| location /api/ { |
| default_type application/json; |
| # 不设置 CORS(复现问题) |
| add_header Access-Control-Allow-Origin ""; # 为空,不允许跨域 |
| return 200 '{"message": "Hello from the API server!"}'; |
| } |
| } |
| |
启用配置
| sudo ln -s /etc/nginx/sites-available/frontend /etc/nginx/sites-enabled/ |
| sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-enabled/ |
| sudo nginx -t |
| sudo systemctl reload nginx |
| |

| rambo@mac:~$ cat /etc/nginx/sites-available/api |
| server { |
| listen 5000; |
| |
| location /api/ { |
| add_header Access-Control-Allow-Origin *; |
| add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; |
| add_header Access-Control-Allow-Headers "Content-Type"; |
| |
| default_type application/json; |
| return 200 '{"message": "Hello from the API server!"}'; |
| } |
| } |
| |
| rambo@mac:~$ sudo systemctl reload nginx |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」