找到
1
篇与
相关的结果
-
Memos 同步思源笔记踩坑记录 Memos 同步思源笔记踩坑记录 起因 笔记又切换回思源笔记了,就想用 Memos 收集灵感然后同步到思源笔记。之前用过一个 Memos 同步插件,今天直接安装上,配置好令牌,结果一点同步,反复报错: Access to fetch at 'https://memos.1du.fun/api/v1/users' from origin 'http://1.1du.fun:6806' has been blocked by CORS policy经典的跨域错误。想着 1panel 后台网站配置跨域应该就行了。 第一坑:CORS 配置不生效 在 Nginx 里加了跨域头: add_header Access-Control-Allow-Origin http://1.1du.fun:6806; add_header Access-Control-Allow-Methods GET,POST,OPTIONS,PUT,DELETE; add_header Access-Control-Allow-Headers "Authorization,User-Agent,origin,Accept" always;保存重载,刷新页面——还是同样报错。 换了 Firefox、开了无痕模式,甚至换了台电脑,错误依旧。 第二坑:curl 能通,浏览器不通 用 curl 测试预检请求: curl -I -X OPTIONS -H "Origin: http://1.1du.fun:6806" \ https://memos.1du.fun/api/v1/users返回结果里明明有 access-control-allow-origin 头,状态码 204,一切正常。 但浏览器就是报 No 'Access-Control-Allow-Origin' header。 关键点来了:再测 GET 请求: curl -I -H "Origin: http://1.1du.fun:6806" \ https://memos.1du.fun/api/v1/users这次返回 501,而且没有 CORS 头! 预检请求(OPTIONS)有跨域头,实际请求(GET)没有。这就奇怪了。 第三坑:Nginx 的 add_header 覆盖机制 翻看 Nginx 配置,发现第 37 行有个: include /www/sites/memos.1du.fun/proxy/*.conf;打开这个 root.conf,第 12 行写着: add_header X-Cache $upstream_cache_status;破案了! Nginx 有个坑爹特性:只要 location 块里用了任何一个 add_header,就会清空从 server 块继承的所有 add_header。 所以虽然我主配置里写了 CORS 头,但被这个 root.conf 给覆盖了。 第四坑:双引号和 always 参数 在 root.conf 里补上 CORS 配置: add_header Access-Control-Allow-Origin http://1.1du.fun:6806 always; add_header Access-Control-Allow-Methods GET,POST,OPTIONS,PUT,DELETE always;还是不行。 改完还是报错。 第五坑:内网直连也跨域 试了下直接用内网 IP http://192.168.1.145:5230,居然还是 CORS 错误。 这说明问题不在 Nginx,是 Memos 本身没返回跨域头。 终极方案:降级 折腾了几个小时,各种 Nginx 配置调来调去,就是不行。 直接降级 Memos 到 0.27 版本。 在 Memos 反向代理跨域设置里: 允许跨域来源填 * 允许所有来源跨域请求(docker 地址、客户端)。 思源笔记插件配置: Memos 地址:http://memos.1du.fun Token:从 Memos 账户设置里复制访问令牌 搞定! 总结 最终还是没解决 Memos 0.29 版本跨域问题,换 0.27 版本继续用。 不要追新 Memos 版本,稳定最重要。全网都在吐槽 Memos 大版本 API 文档经常大改,导致各种问题。 跨域问题,反向代理开启跨域即可。 折腾一下午,总算能同步了。早知道一开始就降级,少踩好多坑。