gpt4 book ai didi

html - MSIE/Edge 将 HTTP HEAD 用于 数据 URL,然后将 204 响应视为错误?
转载 作者:搜寻专家 更新时间:2023-10-31 08:05:47 26 4
gpt4 key购买 nike

背景:

我的 PHP 代码通过发送 HTTP 状态 404 响应或 204 响应来处理典型的 HTTP HEAD 请求。这对我来说似乎是正确的,因为 RFC7231 将 HTTP 状态 204 指定为:

6.3.5. 204 No Content

The 204 (No Content) status code indicates that the server has successfully fulfilled the request and that there is no additional content to send in the response payload body. Metadata in the response header fields refer to the target resource and its selected representation after the requested action was applied...

The 204 response allows a server to indicate that the action has been successfully applied to the target resource, while implying that the user agent does not need to traverse away from its current "document view" (if any)...

A 204 response is terminated by the first empty line after the header fields because it cannot contain a message body...

https://www.rfc-editor.org/rfc/rfc7231#section-6.3.5

由于用户代理只请求 header 而不请求文件本身,因此 204 似乎合适。

惊喜 #1:

元素具有 data 属性的 URL 时,MSIE/Edge 最初会发出 HTTP HEAD 请求,以便通过响应头。虽然这是另一个 MS 怪癖,但它是有道理的,因为它允许浏览器在接收内容之前预加载所需的处理程序。当它收到对 HEAD 请求的合适响应时,它将对文件本身发出 HTTP GET 请求。

现在,如果不是因为......,这不会是一个大问题

惊喜 #2:

当 MSIE/Edge 收到对其 HEAD 请求的 204 响应时,它会将其视为错误并中止加载文件。

不用说,发现(过程和发现本身)非常令人沮丧。

我是否误解了 204 响应的目的或用法?我知道行业使用通常与规范不同,但这似乎……是错误的。

最佳答案

当您使用 HEAD 返回 204 时,您是在告诉用户代理,如果它执行 GET,那么它也会得到 204,因此没有要检索的内容。从用户代理的角度来看,执行 GET 是没有意义的,因为 HEAD 检索了所有可用的信息。

如果执行 GET 请求返回 200,则 HEAD 也应返回 200。

关于html - MSIE/Edge 将 HTTP HEAD 用于 <object> 数据 URL,然后将 204 响应视为错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960873/

26 4 0