Eu quero fazer alguma configuração no meu centos + apache, deixar o servidor httpd enviar 200 respostas quando o cliente fizer uma solicitação de opções.
Há um post muito antigo aqui (2011).
Retornando “200 OK” no Apache em solicitações HTTP OPTIONS
A configuração pode não ser adequada para os sistemas operacionais e apache atuais.
Se a configuração estiver em bom estado, curl -X OPTIONS -i http://remote_ip/remote.html
pode obter o código de retorno 200.
Aqui estão minhas tentativas:
1.cat .htaccess
AuthName "login"
AuthType Basic
AuthUserFile /var/www/html/passwd
require user usernam
Options -Indexes
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
Reinicie-o com systemctl restart httpd
.Error info for command:curl -X OPTIONS -i http://remote_ip/remote.html
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
Exclua a configuração acima em .htacccess.
2.cat /etc/httpd/conf/httpd.conf.
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Headers "Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ blank.html [QSA,L]
</Directory>
Reinicie-o com systemctl restart httpd
.Error info for command:curl -X OPTIONS -i http://remote_ip/remote.html
HTTP/1.1 401 Unauthorized
Date: Sat, 08 Sep 2018 00:34:36 GMT
Server: Apache/2.4.6 (CentOS)
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With
WWW-Authenticate: Basic realm="login"
Content-Length: 381
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>
Primeiro, há um problema com seu
.htaccess
arquivo:OPTIONS
solicitação. Isto é bom.usernam
, independentemente do método de solicitação (GET, POST, OPTIONS, etc...)Portanto, se você remover a linha 4 ou movê-la para a
LimitExcept
seção, sua configuração deve funcionar.Para obter mais informações, consulte os documentos mod_authz_core
Em segundo lugar, a mensagem de erro para a primeira solução que você postou ("O servidor encontrou um erro interno ou configuração incorreta...") indica um
httpd.conf
arquivo inválido. Pode haver algo mais mal configurado. Verifique sua configuração e a documentação do Apache .Como referência, os arquivos de configuração que usei para teste podem ser encontrados em: https://github.com/mhutter/stackexchange/tree/master/467654
O erro
401 Unauthorized
significa que o servidor HTTP espera credenciais, geralmente um nome de usuário e uma senha. De acordo com a pergunta, você removeu o.htacccess
arquivo que solicitava autenticação, portanto, ainda deve haver algo na configuração ativa que solicita autenticação.Para fornecer as credenciais,
curl
você pode usar a opção-u, --user <user:password>
(formato curto ou longo).Quando você recebe um erro
500
, deve haver uma entrada nos logs do Apache que explique qual erro ocorreu.Quando algo não funciona, geralmente é uma boa ideia reduzir a configuração ao mínimo necessário para encontrar o problema. Para fazer isso, comente as linhas que você acha que não causam o problema e tente novamente. Ou ele começa a funcionar, então você sabe onde olhar mais de perto ou tem uma configuração simplificada.
Com sua configuração, as linhas de cabeçalho provavelmente não contribuem para o problema, mas primeiro tentaria fazê-lo funcionar sem o redirecionamento. Quando você tem uma configuração funcionando, você pode adicionar linhas até que ela quebre novamente ou você tenha a configuração desejada.