X

err上线啦

匆匆忙忙 线下一切顺利 线上各种踩坑

2021/9/12

好多功能都还没做好 只能算是个早产儿吧 都是为了满足那些突然汹涌无处可放的话痨欲望

err架构

err的前端是svelteKit 后端使用Iris 数据库用的SQlite 理论上我这无人问津的小站Sqlite 绰绰有余

部署

原来写在一起的项目我做了拆分 前后端分离 都丢到了github上 前端走 vercel 后端走actions 部署到vps 今后 就只用专注撸功能就好

已完成功能:
  • 自动保存文章
  • markdown编辑器
  • Alt+Shift+↑ 等idea上的快捷键(eclipse版
  • 标签功能
  • 图片前端压缩(其实后端也也压缩 转webp格式并生成缩略图
  • 资源管理器以及文件分块上传
  • 资源插入 (图片,音乐,视频 其它文件会提供下载模式
  • 登录多次 进入问题验证模式(目前未启用 感觉有点鸡肋 已经移除
  • 问题验证的问答管理 已经移除
  • 文章发布/撤回/删除
  • 前后台页面的自适应
  • 文章图片查看

算下来 这个博客也消耗量我二十多天的空闲时间 想要做的太多 反而没有了方向 主要功能写完了 现可以以佛系状态摸鱼了

计划要 可能不会做的:
  • 字数统计 (前端做好像比较简单
  • 同步滚动 (这个简单
  • 评论(这块要好好想想
  • 密码保护 (已有 就差看怎么去呈现
  • ip黑名单 (也是已有 但写累了 界面没去撸
  • 更加可配置化 (目前代码专门针对err.name域名设计
  • 导入导出功能
  • 其它数据库支持 (因为是基于Gorm实现会很简单

以上都是不知道猴年马月能完成的 只能说缘分可遇不可求

上线踩的那些坑

cookie丢失

上线后第一个异常是 登陆后台马上弹出了 身份验证不通过 排查发现cookie没有传过去 于是找到Set-cookie方法 加入domain后就可以了 顺便了学习了下same site概念:

  • 如果用户在 www.web.dev 上向static.web.dev请求图像,那么这是一个同站请求
  • 如果用户在a.github.io上向b.github.io请求图像,那么这是一个跨站请求。

在 cookie 上引入 SameSite 属性为控制此行为提供了三种不同的方式。您可以选择不指定属性,也可以使用Strict或Lax来将 cookie 的使用限制在同站请求中

目前 我的站点是属于同站模式 使用的是lax标记 所以 cookie 在api.err.name 也是能偶取到的

base64 webworker

webworker 是个好东西 线下跑一切正常 编译后它变成内置的base64文件编译在js里了 这个有什么问题吗? 问题大了 你之前是独立worker js 地址是同一地址 当以文本方式执行时候 你的源是啥 是当前域名吗 不对Origin是null 没错 null!

于是产生了跨域问题 解决后又出现cookie无法携带问题 最后改代码 在header里加token作为标识

vips图片压缩

这个也记一下吧 花了不少时间 在action部署时候一直报找不到vips(一个压缩图片的依赖)

sudo apt install libvips 不起作用 后来通过sudo apt install libvips-dev才有效果

Commit