PHP legt Header-Informationen fest und erhält die Methode zur Rückgabe von Header-Informationen

不言
Freigeben: 2023-03-23 09:32:01
Original
4660 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Methode zum Festlegen von Header-Informationen und zum Erhalten von Header-Rückgabeinformationen in PHP vorgestellt und die Curl-basierte Betriebstechnik von PHP für Header-Informationen anhand von Beispielen analysiert.

Dieser Artikel wird erläutert Die Beispiele beschreiben, wie man Header-Informationen festlegt und Rückgabe-Header-Informationen in PHP erhält. Teilen Sie es als Referenz mit allen:

Um die Header-Informationen der Anfrage festzulegen, können wir die Header-Funktion fsockopen, curl usw. verwenden. In diesem Artikel geht es hauptsächlich um die Verwendung von Curl Legen Sie die Header-Informationen fest und rufen Sie die zurückgegebenen Header-Informationen ab.

1. Die anfordernde Partei legt ihre eigenen Header-Informationen fest, header.php

<?php
function FormatHeader($url, $myIp = null,$xml = null)
{
 // 解悉url
 $temp = parse_url($url);
 $query = isset($temp[&#39;query&#39;]) ? $temp[&#39;query&#39;] : &#39;&#39;;
 $path = isset($temp[&#39;path&#39;]) ? $temp[&#39;path&#39;] : &#39;/&#39;;
 $header = array (
 "POST {$path}?{$query} HTTP/1.1",
 "Host: {$temp[&#39;host&#39;]}",
 "Content-Type: text/xml; charset=utf-8",
 &#39;Accept: */*&#39;,
 "Referer: http://{$temp[&#39;host&#39;]}/",
 &#39;User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)&#39;,
 "X-Forwarded-For: {$myIp}",
 "Content-length: 380",
 "Connection: Close"
 );
 return $header;
}
$interface = &#39;http://localhost/test/header2.php&#39;;
$header = FormatHeader($interface,&#39;10.1.11.1&#39;);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $interface);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置头信息的地方
curl_setopt($ch, CURLOPT_HEADER, 0); //不取得返回头信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
var_dump($result);
?>
Nach dem Login kopieren

2. Die angeforderte Partei erhält die Header-Informationen, header2. php

<?php
print_r($_SERVER); //头信息里面有内容绝大部分是放在系统变量里面的
?>
Nach dem Login kopieren

3. Schauen Sie sich die Ergebnisse der header.php-Anfrage an

string(1045) "Array
(
[HTTP_HOST] => localhost
[CONTENT_TYPE] => text/xml; charset=utf-8
[HTTP_ACCEPT] => */*
[HTTP_REFERER] => http://localhost/
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)
[HTTP_X_FORWARDED_FOR] => 10.1.11.1
[CONTENT_LENGTH] => 380
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.2.16 (Ubuntu) Server at localhost Port 80</address>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
)
Nach dem Login kopieren

Für die oben genannten können wir eindeutig Sehen Sie, dass ich es bin. Legen Sie die Header-Informationen fest.

4. Erhalten Sie die zurückgegebenen Header-Informationen

Kopieren Sie den Code Der Code lautet wie folgt:

curl_setopt($ch, CURLOPT_HEADER, 1); //取得返回头信息
Nach dem Login kopieren

Wir setzen CURLOPT_HEADER auf 1. In den erhaltenen Ergebnissen stehen diese Informationen vor dem Anzeigearray

string(1239) "HTTP/1.1 200 OK
Date: Fri, 27 May 2011 01:57:57 GMT
Server: Apache/2.2.16 (Ubuntu)
X-Powered-By: PHP/5.3.3-1ubuntu9.5
Vary: Accept-Encoding
Content-Length: 1045
Content-Type: text/html
Array
(
 [HTTP_HOST] => localhost
 [CONTENT_TYPE] => text/xml; charset=utf-8
 [HTTP_ACCEPT] => */*
Nach dem Login kopieren

5. Die $_SERVER-Header-Informationen können nicht abgerufen werden

Header.php ändern

<?php
function FormatHeader($url, $myIp = null,$xml = null)
{
 // 解悉url
 $temp = parse_url($url);
 $query = isset($temp[&#39;query&#39;]) ? $temp[&#39;query&#39;] : &#39;&#39;;
 $path = isset($temp[&#39;path&#39;]) ? $temp[&#39;path&#39;] : &#39;/&#39;;
 $header = array (
 "POST {$path}?{$query} HTTP/1.1",
 "Host: {$temp[&#39;host&#39;]}",
 "Content-Type: text/xml; charset=utf-8",
 &#39;Accept: */*&#39;,
 "Referer: http://{$temp[&#39;host&#39;]}/",
 &#39;User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)&#39;,
 "X-Forwarded-For: {$myIp}",
 "Content-length: " . strlen($xml) ."\r\n\r\n" .$xml, //修改1
 "Connection: Close"
 );
 return $header;
}
$xml = &#39;<?xml version="1.0" encoding="utf-8"?> //修改2
 <profile>
 <sha1>adsfadsf</sha1>
 <user_id>asdfasdf</user_id>
 <album_id>asdf</album_id>
 <album_name>asdf</album_name>
 <tags>asdfasd</tags>
 <title>asdfasdf</title>
 <content>asdfadsf</content>
 <type>asdfasdf</type>
 <copyright>asdfasdf</copyright>
 </profile>&#39;;
$interface = &#39;http://localhost/test/header2.php&#39;;
$header = FormatHeader($interface,&#39;10.1.11.1&#39;,$xml); //修改3
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $interface);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置头信息的地方
curl_setopt($ch, CURLOPT_HEADER, 0); //不取得返回头信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
var_dump($result);
?>
Nach dem Login kopieren

Wenn dies der Fall ist, kann in header2.php beim Drucken von $_SERVER das XML in den Header-Informationen nicht ausgedruckt werden. Zu diesem Zeitpunkt fügen wir nach header2.php die folgenden zwei Zeilen

$raw_post_data = file_get_contents(&#39;php://input&#39;, &#39;r&#39;);
var_dump($raw_post_data);
Nach dem Login kopieren

hinzu, damit der Inhalt von $xml abgerufen werden kann und nur der Inhalt von $xml abgerufen wird.

Verwandte Empfehlungen:

Detaillierte Erklärung, wie PHP das HTTPONLY-Attribut von Cookie festlegt

Serverumgebungsvariablen (Apache/Nginx) festlegen für PHP



Das obige ist der detaillierte Inhalt vonPHP legt Header-Informationen fest und erhält die Methode zur Rückgabe von Header-Informationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!