kodbox icon indicating copy to clipboard operation
kodbox copied to clipboard

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

Open uyoufu opened this issue 5 months ago • 0 comments

在使用 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;
  }

uyoufu avatar Aug 29 '24 00:08 uyoufu