Eu percebi isso! Em vez de incluir o nome de usuário: senha como parte do esquema de URI, o cabeçalho de Autorização precisa ser definido independentemente. A solução a seguir funciona completamente dentro de um arquivo .htaccess
, o que é importante, já que o OS X periodicamente elimina as configurações dentro dos sites do VirtualHost:
SetEnvIf Request_URI ^/download/* ADD_COUCH_BASIC_AUTH
RequestHeader set Authorization "Basic XXXXXXXXXXXX" env=ADD_COUCH_BASIC_AUTH
## DOWNLOAD STREAM
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule download/(.*) http://127.0.0.1:5984/database/$1 [P]
A maneira como isso funciona: usamos SetEnvIf
para verificar se o caminho da solicitação corresponde ao caminho que queremos para o proxy e, em caso afirmativo, defina uma variável de ambiente arbitrária ADD_COUCH_BASIC_AUTH
Na linha subsequente, adicionamos um cabeçalho de Autenticação básica à solicitação de saída, somente se a variável de ambiente que definimos existir. Portanto, o cabeçalho de autenticação básico só será adicionado ao solicitar um recurso por meio de /download/
, enviando assim credenciais de autenticação para o CouchDB.
Nota: você terá que codificar em Base64 seu nome de usuário: credenciais de senha e substituir XXXXXXXXXXX
pelo valor codificado. Uma maneira fácil de fazer isso em um Mac:
echo -n 'user:pass' | openssl base64
Espero que isso ajude alguém além de mim!