Heim  >  Artikel  >  Backend-Entwicklung  >  PHP legt Header-Informationen fest und erhält die Methode zur Rückgabe von Header-Informationen

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

不言
不言Original
2018-05-14 13:35:204677Durchsuche

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);
?>

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

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

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>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
)

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); //取得返回头信息

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] => */*

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);
?>

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);

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!

Stellungnahme:
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