CORS 代理配置
部分平台在浏览器环境下受同源策略限制,需要经过一个中间服务器(CORS 代理)转发请求。
为什么需要
思源的运行环境分两类:
| 环境 | 是否有 CORS 限制 |
|---|---|
| Node 环境(桌面端 Electron):Windows、Linux、macOS | 无限制 |
| 纯浏览器环境:Docker 版、Android、iOS、浏览器访问 | 有限制 |
浏览器有 CORS 限制是 Web 标准的要求,为了安全。插件有些平台的部分接口会触碰到它,于是需要一层代理:先把请求发给中间服务器(后端环境,本身不受 CORS 限制),由它转发并把结果返回。
Docker 版与浏览器访问必须配置
受 CORS 策略限制,Docker 版本以及 Android、iOS、浏览器等环境必须设置 CORS 代理,否则大部分平台无法使用。桌面端通常不需要。
代理的三种形态
插件按配置字段区分走哪条通路:
| 形态 | 对应配置项 | 能力 |
|---|---|---|
| cors-anywhere(自建通用代理) | 跨域代理地址 | 支持绕过受限请求头、请求体支持 FormData |
| Cloudflare Workers | 跨域代理地址 | 同上,部署成本低 |
| 内置中间件代理(旧版通路) | 中间件地址 | 仅支持字符串请求体,不支持 FormData |
图片上传必须用前两种
图片上传依赖 FormData,而旧版中间件只支持字符串请求体。因此带图发布必须使用 cors-anywhere 或 Cloudflare Workers 部署的通用代理。
为什么没有现成的公共代理地址
插件不内置通用代理地址,这不是遗漏,而是有意为之:
- 通用代理需要转发全部请求内容,包括各平台凭据。集中到一个公共地址,等于把所有用户的凭据都经过同一个服务。
- 带宽与请求量成本高。一旦对外共享,很容易被滥用而耗尽额度甚至被封,结果反而是所有人都用不了。
因此通用代理请按下文自行部署一份。配套的服务端部署源码也未公开分发,需要时发邮件索取即可(见各方式的说明)。
方式一:cors-anywhere(自建通用代理)
这是最通用的方案,也是最早支持的一条通路:部署一个 cors-anywhere 服务,把地址填进「跨域代理地址」。
源码获取
插件配套的服务端部署源码未公开分发。需要时请发邮件到 youweics@163.com 索取,说明用途即可。
部署要点
- 准备一台有 Node 环境的服务器。
- 部署 cors-anywhere 服务(或等价的自建通用代理),监听一个端口。
- 在浏览器打开该地址确认服务可访问。
- 把地址填进插件的「跨域代理地址」——带协议(
https://或http://)、不含末尾斜杠。
不要使用来源不明的公共代理
公共代理能看到你发出的全部请求内容,包括平台凭据。务必使用自己部署或可信来源的代理。
方式二:Cloudflare Workers
只需要一个自己的域名,适合没有常驻服务器的场景。
注册并登录 Cloudflare。
解压部署包,安装依赖:
bashnpm i -g pnpm pnpm install部署:
bashpnpm deploy过程中会要求登录 Cloudflare 账号。
在 Dashboard → Workers 和 Pages 里找到刚创建的 Worker:

进入该项目,切到触发器页签,添加自定义域,指向你自己的域名(注意配置 CNAME 解析):

等待生效后,把该域名填进插件的「跨域代理地址」。
部署源码同样请邮件到 youweics@163.com 索取。
方式三:内置中间件代理
插件内置的共享代理地址:https://api.terwer.space/api/middleware,对应配置里的「中间件地址」。
这条通路受较多限制:
- 不支持绕过浏览器拒绝的请求头(如
origin、referer) - 请求体只支持字符串,不支持 FormData 等二进制格式
- 只能代理 API 请求,不能代理普通网页
因此它无法解决图片上传,也走不通 Telegraph 这类需要 FormData 的平台。其余大部分不含图片的场景仍可用。
共享额度
这条通路由作者提供,请求量有限(历史上按「10 万次/天、1000 次/10 分钟」限制,且为所有人共享)。为保证可用性与稳定性,建议按下文自行部署方式一或方式二。
填写位置
- 平台级:设置 → 账号设置 → 对应平台的配置页 → 跨域代理地址
- 全局:设置 → 偏好设置
常见问题
填了代理地址仍然失败
- 先在浏览器直接打开代理地址,确认服务本身可访问。
- 确认地址带协议且不含末尾斜杠。
- 代理部署在本机时,注意 Docker 版思源里的
localhost指向容器自身,需要改用宿主机地址。
图片上传失败,但文本发布正常
说明当前走的是方式三(内置中间件),它不支持 FormData。请改用方式一或方式二,并把地址填进「跨域代理地址」。
部署源码在哪里
未公开分发。请发邮件到 youweics@163.com 索取,说明用途。
桌面端也需要吗
通常不需要。桌面端是 Node 环境,没有 CORS 限制。个别平台因自身策略需要走代理时,插件会在配置页提示。