【问题标题】:Process raw HTTP request处理原始 HTTP 请求
【发布时间】:2010-09-01 17:19:40
【问题描述】:

我想传递一个原始的 HTTP 请求,例如:

GET /foo/bar HTTP/1.1
Host: example.org
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: */*
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Referer: http://example.org/test
Cookie: foo=bar; lorem=ipsum;

到 HTTP 客户端。

我尝试了cat raw.http | curl,但没有成功。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: http curl


    【解决方案1】:

    原始数据输入,原始数据输出:

    nc example.org 80 < raw.http
    

    如果你需要通过一些程序来管道数据:

    cat raw.http | someprogram | nc example.org 80
    

    Manual page

    【讨论】:

    • 这是一个看似简单的答案。它只在某些情况下有效。我用过这个和socat。如果服务器以分块编码响应,您只会得到第一个响应,可能是空白的。我来这里是为了寻找一个我在任何地方都找不到的正确答案!
    • @sillyMunky 如果您有新问题要问,请使用上面的按钮。 First response,你是指第一个块还是对请求的第一个回复(Connection: Keep-Alive)?
    • 这对我没有任何作用。挂了很久,最后什么也没显示,甚至没有错误。
    • @Blauhirn 您可能忘记了标题末尾的空白行。示例:printf 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
    • 从nc获取499状态码是什么原因?
    【解决方案2】:

    请注意,如果您需要 httpS 而不是 http,则这些解决方案都不起作用。在这种情况下,您可以这样发送:

    $ cat raw.http | openssl s_client -connect server:443
    

    【讨论】:

    • 在这种情况下,您如何看待服务器发回的响应?
    • 要查看响应,您必须传递-ign_eof(或启用该功能的-quiet)以使客户端在关闭连接之前等待响应。如果您希望命令在收到响应后退出,请检查serverfault.com/q/731232/58957
    • cat raw.http | ncat --ssl host 443 也应该可以。 (来自 nmap 包的 ncat)
    【解决方案3】:

    这个问题被标记为 curl 所以我认为是时候有一个 curl 的答案了

    cat raw.http | curl "telnet://TARGETHOST:80"
    

    正常使用只需要将 TARGETHOST 设置为与 "host" 标头值相同。

    出于我的目的(不正常),我遇到了一个 TARGETHOST,它是一个 IP 地址,其服务器正在侦听特定主机的主机标头。

    【讨论】:

    • 另外,通过这个解决方案,您可以使用 https :443。
    • 与 nc 选项不同,它正确处理了我的请求,其中包括“Expect: 100-continue”标头。记得按“Ctrl-]”,然后按“quit”,退出 telnet。
    猜你喜欢
    • 2010-09-06
    • 1970-01-01
    • 2021-12-23
    • 2012-10-26
    • 1970-01-01
    • 2018-05-29
    • 2014-01-06
    • 2010-12-08
    • 2019-04-16
    相关资源
    最近更新 更多