对于研究,我期待得到apache在响应请求时发送的实际原始输出,包括所有获取数据,头文件和html。 我将如何去做这件事? 我努力了:
wget --output-document=response.txt -S "http://thewebsiteinquestion.com"
这显示了我所有的响应头都很好地分层,并将HTML发送到response.txt,但我真的很想看到原始文本以及如何格式化。
我想可以用wget来完成,但我知道如何用curl来做到这一点。 yum install curl或任何您的操作系统,如果你还没有安装:
curl -vv http://thewebsiteinquestion.com
输出将显示来自服务器的原始响应,包括标题和正文,就像你想要的。 这纯粹是一个偏好的东西,但我通常发现curl更容易,更直观的使用testing和开发比wget 。
有时使用telnet和讲原始的HTTP也是有帮助的。 作为系统pipe理员/开发人员,我觉得这是非常宝贵的。 例如:
$ telnet google.com 80 Trying 74.125.239.0... Connected to google.com. Escape character is '^]'. GET / HTTP/1.0 Host: google.com HTTP/1.0 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Thu, 20 Sep 2012 22:31:32 ... the rest ommitted
您只需手动inputGET / HTTP/1.0和Host: google.com行。 然后打两次。 通过这种方式,您可以真正看到来自远程HTTP服务器的完整响应,而没有任何阻碍。 当你玩弄它的时候,你可以更好地学习HTTP的工作原理,并且当redirect发生时(你可以看到上面正在发生的事情,通过301 HTTP状态和Location头文件)和你的工具(浏览器,wget,curl )正在为你自动处理它们。
编辑 :如何使用telnet传递GET参数。 只需将它们添加到您说HTTP的path即可:
$ telnet thewebsite.co.uk 80 Trying 95.131.67.221... Connected to thewebsite.co.uk. Escape character is '^]'. GET /?foo=bar HTTP/1.0 Host: thewebsite.co.uk HTTP/1.1 200 OK Date: Fri, 21 Sep 2012 17:43:27 GMT Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Last-Modified: Mon, 01 Jun 2009 20:10 ...
要执行POST查询,您必须计算提交的数据Content-Length ,并将其放在Content-Length ,如下所示:
$ telnet www.yahoo.com 80 Trying 72.30.38.140... Connected to ds-any-fp3-real.wa1.b.yahoo.com. Escape character is '^]'. POST / HTTP/1.0 User-Agent: telnet Host: www.yahoo.com Accept: */* Content-Length: 8 Content-Type: application/x-www-form-urlencoded p=foobar HTTP/1.0 200 OK Date: Fri, 21 Sep 2012 17:57:35 GMT P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV" Cache-Control: private X-Frame-Options: SAMEORIGIN ...
将--save-headers选项添加到wget命令行。