HTTP-POST到Jersey的双HTTP-Status标头

时间:2013-01-25 16:57:20

标签: java http jersey grizzly

我写了一个简单的Grizzly / Jersey应用程序,你可以在这里找到:

https://github.com/boldt/stackoverflow-14526627

我想发布一些表单数据:

curl -X POST -F "name=test" -i http://localhost:9999/files

我收到以下回复:

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Fri, 25 Jan 2013 16:51:18 GMT
Transfer-Encoding: chunked

如您所见,标题加倍,首先是100 Continue后跟200 OK。得到100 Continue是没有意义的。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这很正常。 Curl遵循HTTP 1.1规范。您正在进行POST,这意味着您将要向服务器发送数据。 Curl正在向服务器发送请求标头,其中包含“Expect:100-continue”。

这告诉服务器客户端想要发送POST文档的权限,如果服务器响应HTTP / 1.1 100继续,那么客户端发送文档(在这种情况下你的表单对),否则服务器可能会拒绝它HTTP / 1.1的原因417 Expectation Failed,这使得客户端不会浪费时间发送大量数据,如果它被拒绝的话。

答案 1 :(得分:1)

这两个标题没有任何问题。 阅读有关Expect标题的信息。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
检查您的请求标头。您可能正在发送带有curl的HTTP Expect。

curl -vv -X POST -F "name=test" -i http://localhost:9999/files