如何在 Cloudflare 中设置 HTTP OPTIONS 方法仅允许 GET 和 POST

How to set HTTP OPTIONS Method in Cloudflare only to allow GET and POST

我在网站上启用了 Cloudflare 免费 SSL,我需要更改 HTTP OPTIONS 方法以仅允许 GET 和 POST。

我在 SSH 中使用这个命令来检查可用的方法:

curl -X 选项 https://example.com -I

相关结果为:

...
*  issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0xxxx)
> OPTIONS / HTTP/2
> Host: example.com
> user-agent: curl/7.68.0
> accept: */*
...

来自“接受:/”我明白所有的方法都是允许的,我想改变这个。

我尝试编辑服务器上的 .htaccess 文件并添加

RewriteEngine on
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [F]

它似乎没有用,我认为这可能是我可以在 Cloudflare 中修复的问题,但不知道我应该怎么做。有谁知道这是否可以做到并且可以指出正确的方向?

谢谢

我认为您在表述问题时可能会混淆一些概念。 阻止 除了 GET / PUT 之外的任何 HTTP 方法有很多方法(都使用 Cloudflare,或者直接在您的服务器上使用 htaccess)。

但是,因为您提出了 OPTIONS 方法,所以听起来您想广播哪些方法可用?在这种情况下,您需要阅读 'Access-Control-Allow-Methods' header -

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods

本质上,这就是在发出 OPTIONS 请求后告诉浏览器(或客户端),给定端点可以使用哪些方法。

要使用它,您可以使用 htaccess 或 Cloudflare 添加 headers。