WebDAV uploads fail on Zotero 8 (PUT sent without Authorization, server closes connection)

edited 4 days ago
Environment
Zotero 8.0 (Windows 11 x64)
WebDAV server: OpenList WebDAV (behind reverse proxy / also reproducible on LAN)
Works on Zotero 7 with the same WebDAV settings
Download/GET works on Zotero 8; only attachment upload (PUT .zip) fails

Summary
After upgrading from Zotero 7 to Zotero 8, WebDAV sync fails only for attachment uploads. Zotero 8 appears to send PUT requests without Authorization first, then expects to retry after receiving 401 + WWW-Authenticate. On my WebDAV server (OpenList), the first unauthenticated PUT returns 401 and immediately closes the connection, which causes the upload to fail (Zotero reports upload failure / “HTTP 0”-style errors). Zotero 7 preemptively includes Authorization on the PUT and succeeds.

I will attach sanitized packet captures for both Zotero 7 and Zotero 8 (credentials removed; binary bodies truncated/filtered).



Expected behavior
WebDAV attachment uploads should succeed on Zotero 8 with servers that require Basic auth, as they do on Zotero 7.



Actual behavior
On Zotero 8, attachment upload PUT ...zip receives 401 Unauthorized and Connection: close on the initial request (no Authorization header), causing the upload to fail.



Why this matters
Many WebDAV servers/proxies close the connection after rejecting an unauthenticated PUT to avoid receiving a large request body. Clients typically avoid sending the body before authentication (e.g., by preemptive auth for known endpoints, or using Expect: 100-continue / a preflight request to trigger the challenge).





Packet capture excerpt (sanitized)

Zotero 7 (works): preemptive Authorization

GET /dav/nas/server/sync/zotero/TUSZRRVE.prop HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Authorization: Basic XXXX
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache


HTTP/1.1 404 Not Found
Date: Fri, 23 Jan 2026 11:30:19 GMT
Content-Length: 9
Content-Type: text/plain; charset=utf-8

Not Found
PUT /dav/nas/server/sync/zotero/TUSZRRVE.zip HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/zip
Content-Length: 15084197
Authorization: Basic XXXX
Connection: keep-alive

PK..........7\.X..#*........ .111.pdfUT....;si..UT^..5.$....wwww..w.............[...?y.......\...7.Vw..YU.."W...c...'......af.."b$.7....e...35.Zz...11..1qpqqrp.0(.13r21..1s...q1..1.1..5..... I.C...N.......ojg.gA....=8.....)...T..h...&bo.bk.D....45..8.........-m.M...6F..... %..........$.!.).&.!.....$..(.....$...*..!*.&**..%..*.)......*.!,...&... egb......9..dM...-..X.....[.1(..;..8.....T>`!bfb.`P.p0e.T65c..a"b&b....3......b...........%"...
W.!......~
7.

HTTP/1.1 201 Created
Date: Fri, 23 Jan 2026 11:30:23 GMT
Content-Length: 7
Content-Type: text/plain; charset=utf-8

Created
PUT /dav/nas/server/sync/zotero/TUSZRRVE.prop HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Content-Length: 110
Authorization: Basic XXXX
Connection: keep-alive

17691595944706d3edb1ef85b1262ff2cc09c98db054c
HTTP/1.1 201 Created
Date: Fri, 23 Jan 2026 11:30:24 GMT
Content-Length: 7
Content-Type: text/plain; charset=utf-8

Created





Zotero 8 (fails): PUT sent without Authorization first

GET /dav/nas/server/sync/zotero/M39DP52B.prop HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 Zotero/8.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache


HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="openlist"
Date: Fri, 23 Jan 2026 11:37:06 GMT
Content-Length: 0


GET /dav/nas/server/sync/zotero/M39DP52B.prop HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 Firefox/140.0 Zotero/8.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic XXXX


HTTP/1.1 404 Not Found
Date: Fri, 23 Jan 2026 11:37:06 GMT
Content-Length: 9
Content-Type: text/plain; charset=utf-8

Not Found
PUT /dav/nas/server/sync/zotero/M39DP52B.zip HTTP/1.1
Host: XXX.XXXXXX.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0 Zotero/8.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/zip
Content-Length: 15084197
Connection: keep-alive

PK..........7\.X..#*........ .111.pdfUT....;si..UT^..5.$....wwww..w.............[...?y.......\...7.Vw..YU.."W...c...'......af.."b$.7....e...35.Zz...11..1qpqqrp.0(.13r21..1s...q1..1.1..5..... I.C...N.......ojg.gA....=8.....)...T..h...&bo.bk.D....45..8.........-m.M...6F..... %..........$.!.).&.!.....$..(.....$...*..!*.&**..%..*.)......*.!,...&... egb......9..dM...-..X.....[.1(..;..8.....T>`!bfb.`P.p0e.T65c..a"b&b....3......b...........%"...
W.!......~

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="openlist"
Date: Fri, 23 Jan 2026 11:37:07 GMT
Content-Length: 0
Connection: close


  • Also, for large WebDAV uploads, issuing an unauthenticated PUT that immediately streams the file body is inefficient and can waste significant bandwidth.
  • I am noticing this exact same problem. The repeated 401 errors are causing the fail2ban on my WebDAV server to block my IP address, so I have had to downgrade to Zotero 7.
Sign In or Register to comment.