kalcaddle / kodbox

kodbox is a file manager for web. It is a newly designed product based on kodexplorer. It is also a web code editor, which allows you to develop websites directly within the web browser.You can run kodbox either online or locally,on Linux, Windows or Mac based platforms
https://kodcloud.com
2.18k stars 373 forks source link

使用 koxbox 的 webdev 功能在进行 head 请求时,没有返回 etag header,导致 super-productivity 无法使用 #298

Closed GalensGan closed 2 weeks ago

GalensGan commented 2 weeks ago

在使用 super-productivity 时,使用 kodbox 提供的 webdev 同步数据会报错,通过分析错误,发现是由于 kodbox 提供的 webdev 在进行 head 请求时,没有返回 etag 导致的。

webdev 请求结果如下

curl -I https://cloud.uamazing.cn:52443/index.php/plugin/webdav/kodbox/sync/MAIN.json
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 29 Aug 2024 00:43:08 GMT
Content-Type: text/html; charset=utf8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/8.0.20
Set-Cookie: KOD_SESSION_ID=41dedfdb66b92202b4d1453b6b88a382; expires=Thu, 29-Aug-2024 04:43:08 GMT; Max-Age=14400; path=/; HttpOnly
Set-Cookie: CSRF_TOKEN=2EBb4FnUSctrZNKa; expires=Thu, 05-Sep-2024 00:43:08 GMT; Max-Age=604800; path=/
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE, HEAD, MOVE, COPY, PUT, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK
Access-Control-Allow-Headers: ETag, Content-Type, Content-Length, Accept-Encoding, X-Requested-with, Origin, Authorization
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 3600
Pragma: no-cache
Cache-Control: no-cache
X-DAV-BY: kodbox

super-productity 报错源码:

 private _getRevFromMeta(meta: WebDavHeadResponse): string {
    console.log('_getRevFromMeta',meta)
    if (typeof meta?.etag !== 'string') {
      console.warn('No etag for WebDAV');
    }
    const rev = meta.etag || meta['oc-etag'] || meta['last-modified'];
    if (!rev) {
      throw new Error('Not able to get rev for WebDAV');
    }
    return rev;
  }
kalcaddle commented 2 weeks ago

正常是没有问题的,文件不存在时head请求不会返回etag头. 已经做了兼容处理,插件中心更新即可.