能否使用cURL发送"OPTIONS *"请求?

8

来自RFC7230超文本传输协议(HTTP / 1.1):消息语法和路由

当客户端希望请求服务器作为整体的OPTIONS时,而不是该服务器的特定命名资源,客户端必须仅发送“*”(%x2A)作为请求目标。

为了测试我的网站的反应,我想向服务器发送以下请求。

OPTIONS * HTTP/1.1

我知道可以使用telnet,编写自己的客户端等方式。但我想知道是否可以使用cURL来实现? 编辑 无法通过curl -X OPTIONS http://example.org来完成此操作,如类似但不完全相同的问题中所建议的那样。该命令将发送OPTIONS http://example.org/ HTTP/1.1。我想知道是否可以使用cURL发送星号。

2
可能是重复的问题:如何从命令行发送HTTP OPTIONS请求? - CodeCaster
不是重复命令。该命令将发送“OPTIONS /”,而不是“OPTIONS *”。 - Adam B
1
RFC 2616 已经过时。您可能想引用 https://greenbytes.de/tech/webdav/rfc7230.html#asterisk-form 来代替。 (不,这并不改变问题的本质) - Julian Reschke
2个回答

10

仅使用-X OPTIONS将仅发送一个斜杠而不是星号作为请求路径。

为了使用curl向服务器发送纯文本OPTIONS *,您需要curl 7.55.0或更高版本以及其--request-target选项,并将其添加到-X标志中。用法如下:

curl -X OPTIONS --request-target '*' https://example.com/

我已经试图弄清楚如何做这件事几个月了。我甚至不得不阅读curl代码,但最终放弃了,转而查看Chrome扩展程序。如果您能指出正确的位置,我很乐意修复它。(来自github上的nickshanks) - Nicholas Shanks
1
对我来说,问题不在于“在哪里修复”,而在于“如何修复”。没有其他HTTP方法可以像那样处理纯文本*,因此我们需要想出一些新的解决方案。我建议您将自己的想法和讨论发送到curl库邮件列表中。 - Daniel Stenberg
1
关于 https://cool.haxx.se/mailman/listinfo/curl-library,订阅表单的操作是 http 而不是 https。 - Nicholas Shanks
1
谢谢指出,我想现在已经修复了邮递员订阅,也使用了HTTPS! - Daniel Stenberg

-1

1
不是同一件事。该命令将发送一个 OPTIONS / 请求,而不是带星号的请求。 - Adam B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接