Configurei o lighttpd no meu dispositivo incorporado e configurei os módulos no lighttpd.conf
Ao acessar as páginas da web do Chrome ou Firefox do PC, recebo o nome de usuário e a senha, e depois que os forneci, a página é carregada.
Quando faço o mesmo no iPad ou no navegador do iPhone, também recebo a caixa de diálogo de autenticação, mas, por algum motivo, ela aparece repetidamente.
Usando o módulo mod_accesslog
, pude ver que o iPad ainda faz solicitações sem usar a autenticação, o que resulta em HTTP 401
para alguma solicitação:
192.168.2.33 192.168.2.247 wwwX [10/Apr/2011:16:01:30 +0200] "GET /[...] HTTP/1.1" 304 0 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 wwwX [10/Apr/2011:16:01:30 +0200] "GET /[...] HTTP/1.1" 304 0 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 - [10/Apr/2011:16:01:33 +0200] "GET /[...] HTTP/1.1" 401 351 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 - [10/Apr/2011:16:01:56 +0200] "GET / HTTP/1.1" 401 351 "-" ...
Eu também tentei adicionar o módulo mod_access
, mas isso não mudou nada.
O problema está no navegador ou no lighttpd
webserver ou seus módulos / configuração? Como pode ser corrigido?
As partes relevantes do meu arquivo lighttpd.conf
são assim:
# mod_auth must be loaded before mod_fastcgi
server.modules = (
"mod_auth",
"mod_cgi",
"mod_fastcgi"
)
A seção com a configuração mod_auth é assim:
auth.debug = 0
auth.backend = "plain"
auth.backend.plain.userfile = "/tmp/lighttpd-plain.user"
auth.require = (
"/" =>
(
"method" => "digest",
"realm" => "myRealm",
"require" => "valid-user"
)
)
edit:
Uma coisa que esqueci de mencionar foi que a página da Web faz solicitações AJAX usando jQuery. As solicitações não definem as variáveis username
e password
. Em todos os navegadores, isso funciona sem problemas depois que o usuário se autentica através da caixa de diálogo do navegador.
Acho que os pedidos de AJAX no Safari podem ser os que não usam credenciais e, assim, obter o 401 etc. Existe uma maneira de fazer com que ele use as credenciais fornecidas pelo usuário na caixa de diálogo?