【问题标题】:Double HTTP-Status header on HTTP-POST to Jersey到泽西岛的 HTTP-POST 上的双 HTTP-Status 标头
【发布时间】:2013-01-25 16:57:19
【问题描述】:

我编写了一个简单的 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 是没有意义的。

有什么建议吗?

【问题讨论】:

    标签: java http jersey grizzly


    【解决方案1】:

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

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

    【讨论】:

    • 我会看看规范和wireshark来检查一下:)
    【解决方案2】:

    这两个标题没有问题。 阅读 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
    

    【讨论】:

    • 你说得对。 Curl 正在添加 Expect,我正在添加 -F。见:the-stickman.com/web-development/…
    • 当您在泽西岛打开服务器端登录时,您可以看到这一点(预期:100-继续)。
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2015-04-16
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多