kodbox
kodbox copied to clipboard
使用 koxbox 的 webdev 功能在进行 head 请求时,没有返回 etag header,导致 super-productivity 无法使用
在使用 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;
}