1
15
我发现curlinfo_header_out选项非常有用。 <?php $curl = curl_init('http://www.php.net'); curl_setopt($curl, CURLOPT_HEADERFUNCTION, 'dbg_curl_data'); curl_setopt($curl, CURLOPT_WRITEFUNCTION, 'dbg_curl_data'); curl_setopt($curl, CURLINFO_HEADER_OUT, true); curl_exec($curl); echo '<fieldset><legend>request headers</legend> <pre>', htmlspecialchars(curl_getinfo($curl, CURLINFO_HEADER_OUT)), '</pre> </fieldset>'; echo '<fieldset><legend>response</legend> <pre>', htmlspecialchars(dbg_curl_data(null)), '</pre> </fieldset>'; function dbg_curl_data($curl, $data=null) { static $buffer = ''; if ( is_null($curl) ) { $r = $buffer; $buffer = ''; return $r; } else { $buffer .= $data; return strlen($data); } } |
2
3
实际上,我从不使用curl(在php中)。PHP流API更整洁,也可以用于发布数据。 Wez Furlong 有一篇关于这个的文章。 如果我要用它?我将从打开所有消息开始(将错误报告设置为e_all)。如果我发现PHP没有告诉我在错误消息中需要什么,我可能会使用代理方法来查看实际情况。将目标URL更改为包含类似
是一种方式。另一种方法是使用netcat这样的实用程序监听端口80并将请求发送到:
这不会使任何内容返回到curl,但它将允许您确切地看到发送给服务器的内容,这可能足以诊断问题。 还可以使用 apache_request_headers() 功能。不过,在大多数情况下,我更喜欢netcat方法,因为它可以保证我看到未修改的事实,并显示原始的post数据。 |
Julian Koster · $\u发布内容的持续时间(生存期) 6 年前 |
chris hyun ho kim · 用于“拆分”记录的HTTP谓词 6 年前 |
Ian.V · Golang CSRF在结构中保存模板字段 6 年前 |