如何使用 fetch() JavaScript API 发送“OPTIONS * HTTP/1.1”请求?"/>
如何使用 fetch() JavaScript API 发送“OPTIONS * HTTP/1.1”请求?
来自 RFC 9110,HTTP 语义:
带有星号(“*”)作为请求目标(第 7.1 节)的 OPTIONS 请求一般适用于服务器而不是特定资源。由于服务器的通信选项通常取决于资源,因此“*”请求仅用作“ping”或“no-op”类型的方法;除了允许客户端测试服务器的功能外,它什么都不做。例如,这可用于测试代理是否符合 HTTP/1.1(或不符合)。
我用 JavaScript 编写了一个运行在 Node 上的 HTTP 服务器,并想编写一个单元测试来检查它如何响应以下请求:
OPTIONS * HTTP/1.1
如何使用
fetch()
JavaScript API 发送该请求?
我知道 Curl 可以使用
--request-target
选项(问题是在 here 上 Stack Overflow 上提出的):
curl --request-target '*' -X OPTIONS /
回答如下:
在 JavaScript 中无法使用 OPTIONS * HTTP/1.1
start line 发出 HTTP 请求
OPTIONS * HTTP/1.1
我已经搜索了
fetch
和XMLHttpRequest
的所有文档,发现无法更改HTTP请求起始行(“序言”)的“请求目标资源”部分。
所有 JS API 都从方法和 URL 派生start line 的内容,而资源始终是 URL 的“路径”部分,默认为“
/
”。
没有办法告诉JS在默认
*
通常发生的地方发出带有“/
”的请求。
最重要的是,似乎没有任何其他低级替代方案可以让我们构建整个 HTTP 请求有效负载,包括 start line “手动”,因此可能没有解决方法。
张贴为事物和文档的当前状态的明确答案。很高兴被证明是错误的。
更多推荐
如何使用 fetch() JavaScript API 发送“OPTIONS * HTTP/1.1”请求?
发布评论