代码之家  ›  专栏  ›  技术社区  ›  abernier

处理原始HTTP请求

  •  14
  • abernier  · 技术社区  · 16 年前

    我想传递一个原始的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 但没有成功。

    有什么建议吗?

    谢谢。

    3 回复  |  直到 9 年前
        1
  •  21
  •   Lekensteyn    15 年前

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

    nc example.org 80 < raw.http
    

    如果需要通过某些程序传输数据:

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

    Manual page

        2
  •  7
  •   rob    12 年前

    这个问题被标记为curl,所以我认为是时候给出curl答案了。

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

    对于正常使用,只需将targethost设置为与“host”头值相同。

    出于我的目的(不正常),我访问的目标主机是一个IP地址,服务器正在监听特定主机的主机头。

        3
  •  5
  •   Oleg Kuralenko    9 年前

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

    $ cat raw.http | openssl s_client -connect server:443
    
    推荐文章