【发布时间】:2011-10-19 11:34:30
【问题描述】:
如何使用 php 中的 libcurl 查看完整的请求标头,包括发布数据?
我正在尝试模拟一个页面的发布,当从浏览器完成并在 Live HTTP Headers 中查看时,它看起来像这样:
https://###.com
POST /###/### HTTP/1.1
Host: ###.###.com
...snipped normal looking headers...
Content-Type: multipart/form-data; boundary=---------------------------28001808731060
Content-Length: 697
-----------------------------28001808731060
Content-Disposition: form-data; name="file_data"; filename="stats.csv"
Content-Type: text/csv
id,stats_id,scope_id,stat_begin,stat_end,value
61281,1,4,2011-01-01 00:00:00,2011-12-31 23:59:59,0
-----------------------------28001808731060
Content-Disposition: form-data; name="-save"
Submit
-----------------------------28001808731060--
所以我们很好地看到了我正在上传的文件,它的内容,一切都在那里。但是,当我尝试从 php(使用 CURLOPT_VERBOSE 或 CURLINFO_HEADER_OUT)发布相同的帖子时,我所有从 cURL 获取数据的尝试都显示缺少帖子数据的请求标头,如下所示:
POST /###/### HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Host: ###.###.com
...snipped normal-looking headers...
Content-Length: 697
Content-Type: multipart/form-data; boundary=----------------------------e90de36c15f5
根据此处的 Content-Length,看来一切进展顺利,但它确实有助于我的调试工作,以便能够看到完整的请求。我也很烦,很难,我应该能看到整个事情;我知道我一定错过了什么。
--- 编辑 ---
我正在寻找的是相当于this:
curl --trace-ascii debugdump.txt http://www.example.com/
这似乎与 libcurl 中的 CURLOPT_DEBUGFUNCTION 选项一起可用,但 不是 在 php 中实现的。嘘。
【问题讨论】: