gpt4 book ai didi

http - 在 HTTP 日志中,我看到了 OPTIONS、GET、OPTIONS、POST 为什么?

转载 作者:可可西里 更新时间:2023-11-01 15:20:54 25 4
gpt4 key购买 nike

我目前正在查看一些代理日志并看到:

200 OPTIONS   /api/bob/
200 GET /api/bob/
200 OPTIONS /api/jim/
200 PUT /api/jim/

我想知道一些事情,为什么它在每个请求之前进行 OPTIONS 调用?而且,我的主要问题是:这样做有什么好处?

我原以为这会增加延迟和不必要的开销。

最佳答案

这可能是正在发出的 CORS 请求。参见 this MDN page关于解释 CORS 的工作原理。

基本上,在发出实际请求之前,客户端会发出 OPTIONS 请求以请求获得发出实际请求的许可。这称为“预检请求”。

但有一件事 - CORS 不要求客户端在 HTTP GET 之前发出 OPTIONS 请求。所以客户可能行为不端。

您可以通过调查其 header 来验证 OPTIONS 是否由 CORS 引起 - 如果它们确实具有 Access-Control-Request-MethodAccess-Control-Request-Headers header ,这是预检请求,它是 CORS。


为什么需要预检请求?

CORS 由浏览器强制执行。默认情况下,大多数现代浏览器不允许 Web JS 代码向托管此页面的其他服务器发出 AJAX 请求。这是一项安全措施。

CORS 是浏览器(而不是页面本身!)询问服务器发出实际请求是否安全的一种方式。

对于可以修改服务器上资源的方法——例如大多数 POST 和所有 PUT 方法——浏览器必须首先询问是否可以进行此修改。支持 CORS 的服务器将在预检响应中包含特殊 header 。

没有预检请求:假设浏览器向不支持 CORS 的服务器发出请求。在那种情况下,发出请求可能会修改资源。我们不想要这个!

对于不应更改资源状态的 GET 请求,预检请求不是必需的。

关于http - 在 HTTP 日志中,我看到了 OPTIONS、GET、OPTIONS、POST 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324424/

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