分类: C/C++
2013-01-23 22:06:16
给同事搭建了一个nginx web服务器,将一些资源文件放在上面,供其下载,同时使用curl的api下载文件,告诉我xml,txt都没有问题唯独mp3不能下载。
我想不会吧,于是在linux使用curl命令试了下,curl -O IP:8080/1.mp3.确实没有动静,于是开始google,找不到答案。我又使用wget IP:8080/1.mp3下载成功了。curl号称网络调试神器,居然比wget弱,这不太可能吧。到底是什么原因导致的呢,找不到答案,我开始使用tcpdump抓包。抓出来的包显示curl发的http协议是1.1,wget发送的1.0,wget多发送了connection:Keep-Alive
于是我使用curl --http1.0 --user-agent完全模仿wget的包发现还是不成功
又重新抓了下包tcpdump host IP 发现原来web server返回了数据,奇怪的是curl没有接受
郁闷的狠,最后使用curl -i IP:8080/1.mp3
有一条location记录,使用curl -O IP:8080/1.mp3 --location可以下载了,对应的curl API为
curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);