我想在我的 centos+apache 上进行一些配置,让 httpd 服务器在客户端发出选项请求时发送 200 响应。
这里有一篇很老的帖子(2011)。
在 Apache 中对 HTTP OPTIONS 请求返回“200 OK”
该配置可能不适合当前的操作系统和 apache。
如果配置状态良好,curl -X OPTIONS -i http://remote_ip/remote.html
可能会得到 200 返回码。
这是我的尝试:
1.cat .htaccess
AuthName "login"
AuthType Basic
AuthUserFile /var/www/html/passwd
require user usernam
Options -Indexes
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
systemctl restart httpd
使用命令的 .Error 信息重新启动它: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>
删除 .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>
systemctl restart httpd
使用命令的 .Error 信息重新启动它: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>
首先,您的
.htaccess
文件存在问题:OPTIONS
请求。这可以。usernam
,而不管请求方法(GET、POST、OPTIONS 等...)因此,如果您删除第 4 行或将其移动到
LimitExcept
您的配置应该工作的部分。有关更多信息,请参阅mod_authz_core 文档
其次,您发布的第一个解决方案的错误消息(“服务器遇到内部错误或配置错误......”)提示
httpd.conf
文件无效。可能还有其他错误配置。检查您的配置和Apache 文档。作为参考,我用于测试的配置文件可以在以下位置找到:https ://github.com/mhutter/stackexchange/tree/master/467654
该错误
401 Unauthorized
意味着 HTTP 服务器需要凭据,通常是用户名和密码。根据问题,您删除了.htacccess
请求身份验证的文件,因此在活动配置中必须仍然存在请求身份验证的内容。要提供凭据,
curl
您可以使用选项-u, --user <user:password>
(短格式或长格式)。当您收到错误
500
时,Apache 日志中应该有一个条目来解释发生了什么错误。当某些东西不起作用时,通常最好将配置减少到所需的最小值以找到问题。为此,请注释掉您认为不会导致问题的行,然后重试。要么它开始工作,然后你知道在哪里更仔细地观察,要么你有一个简化的配置。
使用您的配置,标题行可能不会导致问题,但我会首先尝试在没有重定向的情况下使其正常工作。当你有一个工作配置时,你可以添加行直到它再次中断或者你有你想要的配置。