当我向服务器发送请求时,我想看到curl所做的请求头。我要怎么检查呢?
当前回答
您可以使用wireshark或tcpdump来查看任何网络流量(http也可以)。
其他回答
Curl——trace-ascii {filename}或使用单个破折号来代替文件名,将其发送到标准输出:
curl --trace-ascii - {URL}
CURLOPT_DEBUGFUNCTION如果你使用libcurl
这显示了curl发送和接收的所有内容,并附带了一些额外的信息。
你可以通过使用"-"作为文件名直接将头文件转储到标准输出,例如查看头文件和内容,并遵循重定向,所有这些都在一个输出中:
curl -L -D - -s [url]
将报头转储到一个文件中,将响应的有效负载转储到另一个文件中
curl -k -v -u user:pass "url" --trace-ascii headers.txt >> response.txt
我知道这有点晚了,但我最喜欢的方法是netcat,因为你得到了确切的旋度发送;这可能与——trace或——trace-ascii选项不同,后者不会正确显示非ascii字符(它们只显示为点或需要解码)。
你可以很容易地通过打开两个终端窗口,在第一种类型:
nc -l localhost 12345
这将在本地机器的端口12345上打开一个监听进程。
在第二个终端窗口中输入curl命令,例如:
curl --form 'foo=bar' localhost:12345
在第一个终端窗口中,您将确切地看到请求中发送的curl。
当然现在nc不会发送任何响应(除非你自己输入),所以你需要中断curl命令(control-c),并为每个测试重复这个过程。
然而,这对于简单地调试请求是一个有用的选项,因为您不需要在任何地方进行往返,也不需要在任何地方生成虚假的迭代请求,直到您得到正确的请求;一旦你对这个命令感到满意,只需将它重定向到一个有效的URL,你就可以开始了。
您也可以为任何cURL库做同样的事情,只需编辑您的请求以指向本地nc侦听器,直到您满意为止。
我认为curl -verbose/-v是最简单的。它将输出请求头(以'>'为前缀的行),而无需写入文件:
$ curl -v -I -H "Testing: Test header so you see this works" http://stackoverflow.com/
* About to connect() to stackoverflow.com port 80 (#0)
* Trying 69.59.196.211... connected
* Connected to stackoverflow.com (69.59.196.211) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/0.9.8h zlib/1.2.3 libssh2/0.15-CVS
> Host: stackoverflow.com
> Accept: */*
> Testing: Test header so you see this works
>
< HTTP/1.0 200 OK
...
推荐文章
- 如何在PHP中捕获cURL错误
- 在Bash中将输出赋给变量
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- 如何在Node.js内进行远程REST调用?旋度吗?
- 如何为已安装的Ubuntu LAMP堆栈启用cURL ?
- 为什么cURL返回错误“(23)Failed writing body”?
- 如何POST JSON数据与PHP卷曲?
- 使用curl在PHP中获取HTTP代码
- SSL证书错误:无法获得本地颁发者证书
- 从URL执行bash脚本
- PHP中的cURL是什么?
- 对bash脚本函数中定义的变量使用curl POST
- 使用curl POST multipart/form-data的正确方法是什么?
- PHP -调试Curl
- (1) libcurl不支持或禁用https协议