gpt4 book ai didi

ajax - CORS - 如何在 Apache 的 httpd.conf 中忽略 OPTIONS 预检请求的身份验证?

转载 作者:行者123 更新时间:2023-12-04 08:08:09 25 4
gpt4 key购买 nike

我是 CORS 的新手,并且了解到浏览器发送的 OPTIONS 预检请求不包括用户凭据。
如何让过滤器(在 httpd.conf 中)以不同的方式响应 OPTIONS 请求,即绕过身份验证?

这是我目前的配置:

<LocationMatch /api>
SetEnvIfNoCase Origin "https://(www\.)?(domain1\.com|domain2\.com)(:\d+)?$" AccessControlAllowOrigin=$0
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Methods "GET,POST,DELETE,OPTIONS"
Header set Access-Control-Allow-Headers "Accept, Authorization, Origin, Content-Type"
AuthFormProvider ldap
AuthLDAPURL "ldap://localhost:10889/ou=Users,dc=work,dc=com?uid"
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN on
Require valid-user
ErrorDocument 401 /login.html
ErrorDocument 500 /error.html
AuthType form
AuthName realm
Session On
SessionMaxAge 1800
SessionDBDCookieName session path=/
ProxyPass http://localhost:8080 timeout=31536000
AuthFormFakeBasicAuth On
</LocationMatch>

以及发出请求的javascript:
$.ajax({
type : "DELETE",
url : "https://www.domain1.com/api",
xhrFields: {
withCredentials: true,
},
success : function(data){

},
});

我已经尝试了以下但没有运气:

(一种)
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]

(二)
<Limit OPTIONS>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "false"
Header always set Access-Control-Allow-Headers "Accept, Authorization, Origin, Content-Type"
Header always set Access-Control-Allow-Methods "GET,POST,DELETE,OPTIONS,PUT"
</Limit>

(C)
<Limit OPTIONS>
Allow for all
</Limit>

(四)
SetEnvIfNoCase Request_Method OPTIONS allowed

任何的想法 ?请帮忙 !

最佳答案

我今天在 this question 的帮助下解决了同样的问题.基本上你的选择 c.

我的配置结构是:

conf/httpd.conf <- normal stuff   
conf.d/ssl.conf <- set up ssl stuff
conf.d/api.conf <- set specific stuff to api like Auth
/var/www/.htaccess <- set specific stuff to api again

这允许限制除 OPTIONS 之外的所有内容
/conf.d/api.conf文件:
<Directory "/var/www/api">
AllowOverride All
Options FollowSymLinks

<LimitExcept OPTIONS>
Auth stuff here
Mainly your Require statements
</LimitExcept>
</Directory>

然后在我的 .htaccess文件我设置了标题。

The Apache manual在 require 指令中指出“以这种方式应用的访问控制对所有方法都有效。这是通常所希望的。如果您希望仅对特定方法应用访问控制,而让其他方法不 protected ,则放置 Require 语句进入 <Limit> [或 <LimitExcept> ] 部分。”

我必须确保我的应用程序可以处理 OPTIONS,因为此设置不会自动返回。 Herehere人们可以看到如何重定向可能起作用而不是让应用程序中的某些东西来处理它。

关于ajax - CORS - 如何在 Apache 的 httpd.conf 中忽略 OPTIONS 预检请求的身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com