Goodbye Unirun - 校园跑助手网页版🏃♂️
| 学校名称 |
|---|
| 成都信息工程大学 |
| 成都中医药大学 |
| 四川邮电职业技术学院 |
| 四川工商职业技术学院 |
| 四川南充卫生学校 |
| 广安职业技术学院 |
| ... |
| 部署平台 | ||
|---|---|---|
| Cloudflare | Byerun | Unirun |
| Vercel | Byerun | Unirun |
进入项目文件夹:
cd app安装依赖:
npm install开发调试:
npm run dev构建:
npm run build进入代理文件夹:
cd server安装依赖:
npm install启动代理:
npm run start支持在 Cloudflare 和 Vercel 上部署代理,避免源服务器的跨域限制。
graph TD;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef error fill:#FFEBEB,stroke:#E68994,stroke-width:2px;
A([ByerunWeb]):::process -->|Direct Request| U([UnirunAPI]):::process
U --> |Cross - Origin Restriction| E([Request Failed]):::error
A -->|Request Forwarded | C([Cloudflare / Vercel]):::process
C --> U
U --> C
C --> |Response Returned| A
export default {
async fetch(request, env) {
if (request.method === 'OPTIONS') {
return new Response(null, {
status: 200,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': '*'
}
});
} else {
return handleRequest(request, env);
}
}
};
async function handleRequest(request, env) {
const url = new URL(request.url);
const backendUrl = 'https://run-lb.tanmasports.com/v1' + url.pathname + url.search;
const newHeaders = new Headers(request.headers);
newHeaders.delete('Host');
const init = {
method: request.method,
headers: newHeaders,
body: request.method === 'GET' ? null : await request.clone().text()
};
const response = await fetch(backendUrl, init);
const responseHeaders = new Headers(response.headers);
responseHeaders.set('Access-Control-Allow-Origin', '*');
responseHeaders.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
responseHeaders.set('Access-Control-Allow-Headers', '*');
const body = await response.text();
return new Response(body, {
status: response.status,
headers: responseHeaders
});
}
本项目仅供学习研究使用,不得用于任何商业或非法用途。如需体验完整功能,请使用官方应用。
Byerun 基于 CC BY-NC License, Version 4.0 发布。