Я наблюдаю странное поведение на своем веб-сервере. Попытка заставить keeWeb принять файл из общей папки webDAV на другом сервере. Если я хочу добавить файл WebDAV, который вводится в форме:
https://FQDN:8443/webdav/file.kdbx
Я вижу следующие заголовки (заголовки инструментов разработчика FF -> заголовки ответов):
Access-Control-Allow-Origin:"*"
Access-Control-Allow-Methods:"GET, HEAD, POST, PUT, OPTIONS, MOVE, DELETE, COPY, LOCK, UNLOCK"
Access-Control-Allow-Headers:"origin, content-type, cache-control, accept, authorization, if-match, destination, overwrite"
Access-Control-Allow-Credentials:"true"
НО, на вкладке «Сеть» я вижу 401: Метод запроса: Параметры Код состояния: 401 Неавторизованный.
Кажется, что заголовки CORS добавляются, но перезапись не работает. Моя конфигурация Apache:
<Directory /var/www/html/webdav>
Header always set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Headers "origin, content-type, cache-control, accept, authorization, if-match, destination, overwrite"
Header always set Access-Control-Expose-Headers "ETag"
Header always set Access-Control-Allow-Methods "GET, HEAD, POST, PUT, OPTIONS, MOVE, DELETE, COPY, LOCK, UNLOCK"
Header always set Access-Control-Allow-Credentials "true"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
DAV On
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>
Я что-то пропустил или может быть, Rewrite не работает на Apache / 2.4.6 (CentOS). Я действительно понятия не имею, как отлаживать перезапись. Есть ли способ отследить такие вещи?
У меня точно такая же проблема, и я несколько месяцев пытался ее решить, просто сдался. Версия сервера: Apache / 2.4.10 (Raspbian) Я пробовал это в дополнение к заголовкам CORS от Keeweb (https://github.com/keeweb/keeweb/wiki/WebDAV-Config)
Alias /KeePass /var/www/KeePass
<Directory /var/www/KeePass>
DAV On
AuthType Digest
AuthName "KeePass"
AuthUserFile /var/www/passwd.dav
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
</Directory>
Метод OPTIONS должен не подлежат авторизации, поэтому поместите его за пределы каталога, требующего аутентификации, например:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ blank.html [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]
<Directory "/path/to/your/directory">
AuthType "Basic"
AuthName "Password Manager"
AuthBasicProvider file
AuthUserFile "/your/htpasswd.file"
Require user someuser
DAV On
Options Indexes
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Headers "origin, content-type, cache-control, accept, authorization, if-match, destination, overwrite"
Header always set Access-Control-Expose-Headers "ETag"
Header always set Access-Control-Allow-Methods "GET, HEAD, POST, PUT, OPTIONS, MOVE, DELETE, COPY, LOCK, UNLOCK"
Header always set Access-Control-Allow-Credentials "true"
</Directory>