我正在使用以下脚本向站点发送 GET 请求,但是,我不断收到错误消息,服务器没有响应。
- 我已经运行了 wireshark 来查看由于运行这个脚本而产生的任何流量,但是没有流量。
- 我可以从浏览器连接到站点,也可以使用 file_get_contents 函数检索内容,但是使用套接字,我无法做到这一点。
这是使用套接字将请求发送到站点的代码,如果连接不成功,它会返回错误:“服务器没有响应”。
<?php
error_reporting(0);
set_time_limit(0);
ini_set("default_socket_timeout", 5);
function http_send($host, $packet)
{
if (!($sock = fsockopen($host, 80)))
die( "\n[-] No response from {$host}:80\n");
fwrite($sock, $packet);
return stream_get_contents($sock);
}
$host="http://example.com";
$path="/";
$packet = "GET {$path} HTTP/1.0\r\n";
$packet .= "Host: {$host}\r\n";
$packet .= "Connection: close\r\n\r\n";
http_send($host, $packet);
?>
那么,上面的代码有什么问题导致无法发送 GET 请求呢?
在我看来没问题,它将形成 GET 请求的 HTTP 请求标头并存储在 $packet 变量中。
$host 是目标站点名称。
然后它调用函数 http_send 来发送请求。
错误输出:[-] http://example.com:80没有响应