命令行curl可使用-D
選項顯示響應頭,但我想查看它發送的請求頭。 我怎樣才能作到這一點? php
詳細選項很方便,可是若是你想看到curl所作的一切 (包括傳輸的HTTP主體,而不單單是標題),我建議使用如下選項之一: html
--trace-ascii -
#stdout --trace-ascii output_file.txt
我相信你想要傳遞給curl的命令行開關是-I
。 shell
用法示例: bash
$ curl -I http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287 HTTP/1.1 301 Moved Permanently Date: Sat, 29 Dec 2012 15:22:05 GMT Server: Apache Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/ Content-Type: text/html; charset=iso-8859-1
此外,若是您遇到響應HTTP狀態代碼301,您可能還想傳遞-L
參數開關告訴curl
遵循URL重定向,而且在這種狀況下,打印全部頁面的標題(包括URL重定向) ,以下圖所示: curl
$ curl -I -L http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287 HTTP/1.1 301 Moved Permanently Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/ Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 302 Found Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Set-Cookie: UID=b8c37e33defde51cf91e1e03e51657da Location: noaccess.php Content-Type: text/html HTTP/1.1 200 OK Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Content-Type: text/html
在調試Web應用程序時,我必須本身克服這個問題。 -v
很棒,但對個人口味來講有點過於冗長。 這是我提出的(僅限bash)解決方案: ide
curl -v http://example.com/ 2> >(sed '/^*/d')
這是有效的,由於-v
的輸出發送到stderr,而不是stdout。 經過這個重定向到一個子shell,咱們能夠sed
來除去這樣開始的行*
。 因爲實際輸出不經過子shell,所以不會受到影響。 使用子shell有點笨拙,但這是將stderr重定向到另外一個命令的最簡單方法。 (正如我所說,我只是用它進行測試,因此它適用於我。) 測試
curl的-v選項在錯誤輸出中過於冗長,錯誤輸出包含前導*
(狀態行)或>
(請求頭字段)或<
(響應頭字段)。 只獲取請求頭字段: url
curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '>' | cut -c1-2 --complement
只獲取請求頭字段: spa
curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '<' | cut -c1-2 --complement
或者使用-D選項將其轉儲到/tmp/test.txt
文件中 命令行
curl -D /tmp/test.txt -sS www.stackoverflow.com > /dev/null
爲了過濾-v
輸出,你應該將錯誤輸出定向到終端並將std輸出定向到/ dev / null,-s選項是禁止進度計量
顯示響應標頭的流行答案,但OP詢問了請求標頭。
curl -sD - -o /dev/null http://example.com
-s
- 避免顯示進度條 -D -
- 將標頭轉儲到文件,可是-
將其發送到stdout -o /dev/null
- 忽略響應正文 這比-I
好,由於它不發送HEAD
請求,這會產生不一樣的結果。
它比-v
更好,由於你不須要那麼多hack來解開它。