gpt4 book ai didi

http - 如何处理 "100 continue"HTTP 消息?

转载 作者:可可西里 更新时间:2023-11-01 15:04:45 27 4
gpt4 key购买 nike

我正在编写一个简单的 HTTP 服务器,它将接受主要来自 cURL 作为客户端的 PUT 请求,我在处理 Expect: 100-continue 时遇到了一些问题。标题。

据我了解,服务器应该读取 header ,发回 HTTP/1.1 100 Continue响应连接,读取流直到 Content-Length 上的值然后发回真正的响应代码(通常是 HTTP/1.1 200 OK 但任何其他有效的 HTTP 响应都应该这样做)。

嗯,这正是我的服务器所做的。问题是,显然,如果我发送 100 Continue回答,cURL 无法报告任何后续的 HTTP 错误代码并假定上传成功。例如,如果上传由于内容的性质而被拒绝(正在进行基本数据检查),我希望调用客户端检测到问题并采取相应措施。

我是否漏掉了一些明显的东西?

编辑:这是来自 cURL 的示例输出,其中包含一个包含错误的辅助 header :

> PUT /test1%2Epdf HTTP/1.1
> Authorization: Basic xxxx
> User-Agent: curl/7.20.0 (i386-pc-win32) libcurl/7.20.0 OpenSSL/0.9.8l zlib/1.2.3
> Host: localhost
> Accept: */*
> Content-Length: 24
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 415 Unsupported Media Type
< Connection: close
< Content-Type: text/xml
< Content-Length: 289
<

最佳答案

我知道这是旧的,但这是我对“100 继续”的理解

您的服务器应该仅根据来自客户端的 header 来验证请求,即如果请求无效,不要发送“100 Continue”,而是发送实际的 http 错误,例如403. 这应该可以防止客户端发布数据,据我所知这是往返服务器的全部要点(即客户端首先等待“100 继续”)。

如果您要验证实际发布的数据,那么您需要在此处应用更高级别的协议(protocol),即发送包含在有效 HTTP 响应内容中的错误。是的,这似乎是限制,我不认为这是协议(protocol)限制;客户端更可能混淆不得不多次处理服务器响应。

关于http - 如何处理 "100 continue"HTTP 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2964687/

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