[英]How to print all information from an HTTP request to the screen, in PHP
我需要一些 PHP 代碼來轉儲 HTTP 請求中的所有信息,包括標頭和 POST 請求中包含的任何信息的內容。 基本上,這是一種診斷工具,可以准確地顯示我發送到服務器的內容。
有沒有人有一些代碼可以做到這一點?
一個簡單的方法是:
<?php
print_r($_SERVER);
print_r($_POST);
print_r($_GET);
print_r($_FILES);
?>
需要進行一些按摩以按照您想要的順序獲取所有內容,並排除您不感興趣的變量,但應該給您一個開始。
沒有人提到在任何情況下如何正確轉儲HTTP頭。
從CGI規范rfc3875,第4.1.18節:
名稱以“HTTP_”開頭的元變量包含從客戶端請求標頭字段讀取的值,如果使用的協議是HTTP。 HTTP標頭字段名稱轉換為大寫,所有出現的“ - ”都替換為“ ”並且前面有“HTTP ”以提供元變量名稱。
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
$chunks = explode('_', $key);
$header = '';
for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) {
$header .= ucfirst(strtolower($chunks[$i])).'-';
}
$header .= ucfirst(strtolower($chunks[$i])).': '.$value;
echo $header.'<br>';
}
}
詳細信息: http : //cmyker.blogspot.com/2012/10/how-to-dump-http-headers-with-php.html
匯總Peter Bailey和Cmyker的答案,你得到的結論如下:
<?php
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
$chunks = explode('_', $key);
$header = '';
for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) {
$header .= ucfirst(strtolower($chunks[$i])).'-';
}
$header .= ucfirst(strtolower($chunks[$i])).': '.$value;
echo $header."\n";
}
}
$body = file_get_contents('php://input');
if ($body != '') {
print("\n$body\n\n");
}
?>
它與php -S
內置的webserver一起使用,這是PHP的一個非常方便的功能。
如果您想要實際的HTTP標頭(請求和響應), 請嘗試使用hurl.it。
您可以使用PHP命令apache_request_headers()
來獲取請求標頭,使用apache_response_headers()
來獲取當前響應標頭。 請注意,只要內容尚未提供,就可以在PHP腳本中稍后更改響應。
file_get_contents('php:// input')並不總是有效。
我在標題“content-length = 735”和“php:// input”中有一個請求是空字符串。 所以取決於HTTP請求的好/有效程度。
另外,你可以使用get_headers() 。 它不依賴於apache ..
print_r(get_headers());
問題是,在URL我寫了http:// my_domain而不是https:// my_domain
這就是我使用的:
foreach ($_SERVER as $key => $value) { error_log("$key: $value"); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.