頭信息很重要,2個人,一個叫服務器(服務端),一個叫浏覽器(客戶端),即有2個頭信息,請求頭信息和返回頭信息。
那麼如果通過php獲取這些頭信息,服務端想獲取浏覽器請求時的頭信息,可以用$_SERVER,代碼如下:
<?php
function
GetHeaderInfo(){
foreach
(
$_SERVER
as
$name
=>
$value
){
$headers
[
$name
] =
$value
;
}
return
$headers
;
}
var_dump(GetHeaderInfo());
?>
輸出:
array
(size=32)
'HTTP_HOST'
=> string
'localhost'
(length=9)
'HTTP_USER_AGENT'
=> string
'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0'
(length=65)
'HTTP_ACCEPT'
=> string
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
(length=63)
'HTTP_ACCEPT_LANGUAGE'
=> string
'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3'
(length=35)
'HTTP_ACCEPT_ENCODING'
=> string
'gzip, deflate'
(length=13)
'HTTP_COOKIE'
=> string
'bdshare_firstime=1365907820098'
(length=30)
'HTTP_CONNECTION'
=> string
'keep-alive'
(length=10)
'HTTP_CACHE_CONTROL'
=> string
'max-age=0'
(length=9)
'PATH'
=> string
'C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\svn\bin;D:\curl\curl-7.19.5;E:\mysql5.5\mysql\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Ruby193\bin;C:\Program Files\SinoVoice\jTTS 5.0 Desktop\Bin;D:\php\xampp\php;C:\wamp\bin\php\php5.4.3\php.exe;'
(length=266)
'SystemRoot'
=> string
'C:\WINDOWS'
(length=10)
'COMSPEC'
=> string
'C:\WINDOWS\system32\cmd.exe'
(length=27)
'PATHEXT'
=> string
'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH'
(length=48)
'WINDIR'
=> string
'C:\WINDOWS'
(length=10)
'SERVER_SIGNATURE'
=> string
''
(length=0)
'SERVER_SOFTWARE'
=> string
'Apache/2.2.22 (Win32) PHP/5.4.3'
(length=31)
'SERVER_NAME'
=> string
'localhost'
(length=9)
'SERVER_ADDR'
=> string
'127.0.0.1'
(length=9)
'SERVER_PORT'
=> string
'80'
(length=2)
'REMOTE_ADDR'
=> string
'127.0.0.1'
(length=9)
'DOCUMENT_ROOT'
=> string
'C:/wamp/www/'
(length=12)
'SERVER_ADMIN'
=> string
'admin@localhost'
(length=15)
'SCRIPT_FILENAME'
=> string
'C:/wamp/www/1.php'
(length=17)
'REMOTE_PORT'
=> string
'2483'
(length=4)
'GATEWAY_INTERFACE'
=> string
'CGI/1.1'
(length=7)
'SERVER_PROTOCOL'
=> string
'HTTP/1.1'
(length=8)
'REQUEST_METHOD'
=> string
'GET'
(length=3)
'QUERY_STRING'
=> string
''
(length=0)
'REQUEST_URI'
=> string
'/1.php'
(length=6)
'SCRIPT_NAME'
=> string
'/1.php'
(length=6)
'PHP_SELF'
=> string
'/1.php'
(length=6)
'REQUEST_TIME_FLOAT'
=> float 1366034246.187
'REQUEST_TIME'
=> int 1366034246
可以看到不僅輸出客戶端的一些信息,也輸出了服務端的一些信息。針對這些信息具體作用,這裡不多介紹了,請查看http://www.cnblogs.com/IAmBetter/archive/2013/04/11/3014796.html
其實針對apache服務器可以使用現成的函數:getallheaders(),用這個函數的好處不多說了,直接看返回值吧
array
(size=8)
'Host'
=> string
'localhost'
(length=9)
'User-Agent'
=> string
'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0'
(length=65)
'Accept'
=> string
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
(length=63)
'Accept-Language'
=> string
'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3'
(length=35)
'Accept-Encoding'
=> string
'gzip, deflate'
(length=13)
'Cookie'
=> string
'bdshare_firstime=1365907820098'
(length=30)
'Connection'
=> string
'keep-alive'
(length=10)
'Cache-Control'
=> string
'max-age=0'
(length=9)
完全沒有類似於HTTP_這樣的參數,還需要去處理等問題。
知道如何獲取請求過來的頭信息了,那麼也應該知道如何設置頭信息,比如:
<?php
header(
"name:anleb"
);
?>
客戶端獲取到了服務端設置的頭信息[name]
那麼這個有什麼用呢?其實有判斷對方到底是什麼請求?是同步請求呢,還是異步請求
2.html頁面是請求頁面
<html>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
</head>
<script>
function
CallAjax()
{
var
xmlHttp =
new
XMLHttpRequest();
xmlHttp.open(
"POST"
,
'1.php'
, false);
xmlHttp.setRequestHeader(
"Is_Ajax"
,
"yes"
);
xmlHttp.send(
"name=anleb"
);
result = xmlHttp.responseText;
alert(
"Result:"
+ result);
}
</script>
<body>
<input type=
'button'
value=
'點擊Ajax'
onclick=
'CallAjax();'
>
</body>
</html>
返回頁面
<?php
if
(isset(
getallheaders
()[
'is_ajax'
]) &&
getallheaders
()[
'is_ajax'
]==
'yes'
){
echo
'yes'
;
}
else
{
echo
'no'
;
}
?>
結果:
完畢,說的不好大家見諒。