问题标签 [http-status-code-100]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 使用 Expect: 100-Continue with HttpClient 处理失败
我对优化调用 REST API 的客户端的行为很感兴趣。在此 API 中,特定的 POST 操作允许包含If-None-Match: *
标头,如果正在上传的项目已经存在于系统中,这会导致服务器报告 HTTP 412 响应。与 一起使用时Expect: 100-continue
,服务器将以 412响应,而不是发送 100 响应,如RFC 2616 §8.2.3中所述。我想在客户端检测到这种情况,并避免在这种情况下传输请求的正文。
直接使用 时HttpWebRequest
,实现起来相当简单。在调用GetRequestStream
(或GetRequestStreamAsync
)之后,但在将数据写入结果之前Stream
,代码只需要检查HaveResponse
属性。如果值为true
,关闭请求流并继续调用GetResponseAsync
。
现在我正在努力过渡到使用HttpClient
而不是HttpWebRequest
直接使用(以改进跨多个平台的支持)。目前,我使用 aStreamContent
来表示请求的主体,并观察流的内容是否已发送,无论服务器是否发送了 100 或 412 响应。如何使用HttpClient
andHttpRequestMessage
而不是执行与上述优化类似的优化HttpWebRequest
?
scala - curl, play & expect 100 continue 标题
考虑一个在 play 中编写的 Web 服务,它除了 POST 请求(用于上传)。现在,当用中等大小的图像(~75K)测试这个时,我发现了一个奇怪的行为。好吧,代码比冗长的解释说得更清楚,所以:
如您所见,curl 决定添加 header Content-Length: 27442
,但这不是真的,实际尺寸是 75211,在游戏中,我确实得到了一个尺寸仅为 27442 的主体。粗略,这不是预期的行为。所以我尝试了一个不同的工具,而不是curl
我使用libwww-perlPOST
的工具:
这个请求成功了。所以我开始更加关注工具之间的差异。对于初学者:Content-Length
标题是正确的,但是Expect
第二次尝试时标题丢失了。无论哪种方式,我都希望请求成功。所以在 play (via) 中看到的完整标题列表request.headers
是:
对于卷曲:
对于 libwww-perl POST:
所以我目前的想法是:更简单的 perl 工具使用单个请求,这是不好的做法。更好的方法是等待100 continue
确认(特别是如果你要上传几 GB 的数据......)。curl
将继续发送数据,直到它收到一个200 OK
或一些错误的请求错误代码。那么为什么 play 发送200 OK
响应而不等待下一个块呢?是因为 curl 指定了错误Content-Length
吗?如果它完全错误......(也许这是指当前块的大小?)。那么问题出在哪里?在 curl 中还是在 play webapp 中?我该如何解决?
http - Amazon S3 不返回 100 继续,怎么办?
我想将文件上传到 S3。我创建了一个 httpconnnection(s3.amazonaws.com),然后发送 head={'Date': 'Fri, 18 Jul 2014 03:24:08 +0000', 'Host': 'xx-bucket.s3.amazonaws .com','内容长度':32,'授权':'AWS AKIAI2V3MxxxOOKYAAA:JrjeT5rTxCl752tMWEZ0knEE3Zw =','期望':'100-继续'}。
然后我等待 s3 返回状态 100 继续。可悲的是,s3 没有返回。这种情况在一周之前没有发生。
如果我使用 httpSconnection(s3.amazonaws.com),s3 将返回状态 100 继续。发生了什么事?
c# - 从 Web API 控制器重定向 POST 请求时处理 100-continue
我有一个ApiController
通过 HTTP 的状态代码 307 重定向它来响应 POST 请求。它只使用来自标头的信息,因此此操作不需要请求的正文。此操作等效于:
这很简单,但我想做一个改进。请求正文可能包含大量数据,因此我想利用 HTTP 状态代码 100 来提高此请求的效率。使用现在的控制器,对话可能如下所示:
由于重定向操作不需要请求正文,我希望能够将对话缩短为:
我花了一天的大部分时间研究如何实现这一点,但我无法提出解决方案。在我的研究中,我了解到:
- 当
ApiController
' 的动作执行时,100 Continue
已经被发送。 - 当
ApiController
被构造时,100 Continue
已经被发送。 HttpApplication
触发'PreRequestHandlerExecute
事件时,100 Continue
尚未发送响应。- 当 a
DelegatingHandler
执行时,100 Continue
已经发送了。
基于此,到目前为止,我提出的最佳解决方案是创建一个HttpModule
使用RouteData
onRequestContext
来覆盖响应,当有ApiController
问题的是请求的接收者时。然而,这远不是一个理想的解决方案,因为几个原因(代码分离、没有利用 Web API 的参数绑定以及绕过AuthorizeAttribute
on the中的额外逻辑ApiController
)。
似乎必须有更好的解决方案,但我发现关于如何正确处理Expect: 100-continue
Web API 应用程序中的标头的信息很少。实现此ApiController
以正确处理Expect: 100-continue
标头的最简单方法是什么?
c# - C# Owin Self Host - 预期标头 100-继续
我们在使用 OWIN 和自托管时遇到了问题。我们有从控制台应用程序运行的网络服务器。它不在 IIS 上运行。
HTTP 100-continue 规范: http ://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
OWIN 100-continue 规范: http ://owin.org/html/owin.html
什么/在哪里/如何处理期望:请求中的 100-continue 标头?我们正在使用简单的引导程序:
php - 我是否需要在接收 JSON HTTP POST 的 PHP 脚本中特别处理 HTTP 响应?
我会再试一次,因为我的最后一个问题写得不够好。
我正在编写一个PHP
脚本来处理以下JSON HTTP POST
请求。
我只想给自己发一封电子邮件,其中包含mobileNumber
.
如果我只是打开浏览器并转到mysite.com/json.php
发送电子邮件的页面(没有任何数字 obv),但是POST
发送请求时没有任何反应。
客户端可能正在请求一个100-continue
,如标头所示(使用 posttestserver.com 进行测试时):
我是否需要专门处理我的 PHP 脚本中的 HTTP 响应?
api - 如何在 .NET Core WEB API 中返回 Continue Http 状态码?
我在设置100
响应状态码时遇到问题。我尝试了以下方法:
但它不起作用,服务器拒绝回答。有没有人遇到过类似的问题?
spring-boot - Spring Webflux:WebClient处理Expect:100-继续
我对 Spring Webflux 和使用 WebClient 相当陌生。例如,我所拥有的 POST-Request 正在执行如下操作:
实际上,代码稍微复杂一些,但这个示例足以作为基本问题的演示。无论如何,这确实有效,我得到了想要的结果。现在由于资源可能非常大,我想使用“期望:100-继续”标题。
问题是,我现在得到的是一个空的 100 响应,没有任何关于如何触发剩余请求的线索。我在 Google 或 Stack Overflow 上找不到任何关于如何解决此问题的信息。
我将不胜感激任何指示。
node.js - 当 Express API 应该只返回一个时,它会返回重复的“100 个继续”响应
问题描述
当向我的 Express 应用程序 (Node.js) 发出 HTTP POST 请求时,服务器会响应两个“100 Continue”响应,然后是一个“200 OK”响应,而此时应该只有一个“100 Continue”。
Postman 设法忽略第二个“100 continue”并报告成功,但我正在使用 Mule ESB 构建的另一个应用程序不接受额外的“100 continue”并失败。
否则应用程序会毫无问题地处理 POST 请求,将数据写入数据库等等。
关于技术环境
Express 应用程序在 SUSE 服务器上运行。Nginx 充当反向代理。我用 PM2 管理多个 Express 应用程序。
起初,我使用带有代理包的单独 Express 应用程序充当反向代理。但是我把它改成使用 Nginx 作为反向代理,认为这可能是问题所在。但这并没有什么不同。
我已经在我的本地机器上尝试了与快速反向代理完全相同的设置,并且根本不返回“100 Continue”,只返回“200 OK”。
我无法弄清楚为什么完全相同的应用程序在本地/服务器上运行时会返回不同的响应。
示例响应
什么可能导致多个“100 Continue”响应,我该如何防止它们?
由于该应用程序在我的本地计算机上根本没有返回任何“100 Continue”响应,服务器/防火墙是否可能导致此问题?
java - 使用 Vert.x 从服务器接收 100-continue 响应时如何检索标头内容?
https://jmarshall.com/easy/http/#http1.1c4
我们可以在发送 100-continue 中间响应时添加任何标头。
但是我们可以在 Vert.x 代码中看到,当他要调用时continueHandler
,响应内容被忽略了,被扯掉了:
显然是因为处理程序不带任何参数。
响应被撕掉之前的调用:
虽然规范对这一点并不精确,但我没有找到有关服务器 100-continue 响应的官方内容的任何精确细节。
我想通过最少的修改来解决这个问题,有什么线索吗?
杰拉德