Mar*_*ald 17 security mod-rewrite http apache-2.2
我正在尝试在不涉及任何代码的情况下实现跨域HTTP 访问控制。
我的 Apache(2) 服务器使用此块返回正确的访问控制标头:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Run Code Online (Sandbox Code Playgroud)
我现在需要阻止 Apache 在浏览器发送HTTP OPTIONS
请求(它存储在REQUEST_METHOD
环境变量中)时执行我的代码,返回200 OK
.
当请求方法为 OPTIONS 时,如何配置 Apache 以响应“200 OK”?
我试过这个mod_rewrite
块,但访问控制头丢失了。
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
Run Code Online (Sandbox Code Playgroud)
alv*_*osu 13
您正在向非成功(非 2xx)响应(例如重定向)添加标头,在这种情况下,最终响应中仅使用与 always 对应的表。
正确的“标题集”:
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您为经过身份验证的访问设置目录,Chrome 和 Safari(可能还有其他浏览器)等浏览器总是在 XmlHttpRequest 调用之前发送一个未经认证的 OPTIONS 请求,如果我们不设置 .htaccess 文件/apache 配置,它总是会收到 401 并失败允许 OPTIONS 方法而无需身份验证。这让我疯狂了 2 天,我猜这是网站管理员保密的那种“深奥”信息!无论如何,我像这样配置了我的 .htaccess,现在它可以工作了:
AuthUserFile <path to password file>
AuthName "Thou shalt not pass!"
AuthType Basic
Options -Indexes
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
Run Code Online (Sandbox Code Playgroud)
然后您必须在 PHP 脚本上正确设置标题。
小智 8
有时这种方法可以帮助:
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ blank.html [QSA,L]
Run Code Online (Sandbox Code Playgroud)
当你有类似 apache 的服务器时它很有用
归档时间: |
|
查看次数: |
51022 次 |
最近记录: |