HTTP Request(요청) Headers 상세정보
HOST
HTTP요청을 보낼 특정 도메인.
PHP에서는 $_SERVER['HTTP_HOST'] 혹은 $_SERVER['SERVER_NAME'] 로 알아볼수 있습니다.
User-Agent
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
여기서 담고 있는 내용은:
1. 웹브라우저 및 버전
2. 운영체제계열 및 해당 정보
3. locale언어
이런 정보들의 임의적 노출때문에 아까 말하던것처럼 해당 웹서버(Mozilla처럼)는 우리들을 요해하고 가장 적절한 방법으로 우리에게 자신의 웹을 표현하려고 하죠. PHP에서 쓰는 방법을 보면,
if ( strstr($_SERVER['HTTP_USER_AGENT'],'MSIE 6') ) {
echo "Please stop using IE6!";
}
우리가 IE6으로 접속을 시도한다면 "Please stop using IE6!"이라는 메시지로 ie6을 버리라고 권장하고 있습니다.
Accept-Language
Accept-Language: en-us,en;q=0.5
사용자의 언어환경을 감별하려는데 쓰이고 있습니다. 저같은 경우는 xp-sp3-pro-eng라 google.com이나 mozilla를 띄우면 영어로 된 환경을 보여주고 프로그램 다운로드도 아예 모두 영어버전으로 세팅되만 중국어나 한국어로 windows를 부팅하면 또 사용자 세팅과 같은 언어로 세팅해주겠죠.
다국어언어세팅일 경우 첫번째는 최우선 언어종류, 나머지는 ",'으로 구분하고 기다언어에 "q"라는 별칭에 사용애호정도를 0~1사이의 값으로 표현합니다. PHP에서 응용할시,
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') {
header('Location: http://french.mydomain.com');
}
Accept-Encoding
Accept-Encoding: gzip,deflate
웹리소스를 그냥 그대로 가져온다기보다 우리는 압축된 상태로 전송하는 방법을 쓰고 있습니다. 보통 gzip이라는 압축방법을 쓰는데 압축된 상태로 전송할 경우 최대로 80%의 사이즈를 줄임으로서 더 효과적으로 bandwith를 관리가 가능하게 되죠.
If-Modified-Since
만약 해당 웹리소스가 우리의 cache부분에 이미 저장되어 있을 경우, 다시 한번 접속을 시도할때 웹브라우저는 기존의 리소스가 修正이 되었는지 여부를 먼저 판단하게 됩니다. 개인적으로 별로 이 부분을 써 본적이 없어 더 많이는 설명을 못드리니다-.-;
Cookie
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar
먹을수 있는 쿠키가 아니구, 쉽게 이해해서 우리와 서버와의 현재 관계를 기록하고 있는 값입니다. 쿠키에는 세션도 포함이 가능하구요. 해당 쿠키는 $_COOKIE array로 받을수 있고 $_SESSION array로 세션부분도 받을수 있습니다. session id가 필요할 경우 직접 session_id()함수로 cookie를 대체도 가능하구.
echo $_COOKIE['foo'];
// output: bar
echo $_COOKIE['PHPSESSID'];
// output: r2t5uvjq435r4q7ib3vtdjq120
session_start();
echo session_id();
// output: r2t5uvjq435r4q7ib3vtdjq120
Referer
이름 그대로 참조된 url를 뜻합니다. 예를 들어 모이자내부에서 한개 링크를 클릭할 경우,
Referer: life.moyiza.kr
이런 식으로 나오겠죠. 사실 영어단어측에서 spelling이 referer가 아니라 referrer이지만 이미 HTTP spec에 제정된지 오래돼서 아예 재미로 그냥 그대로 두고 있다네요.
Authorization
Authorization: Basic bXl1c2VyOm15cGFzcw==
암호화 된 페이지에 접속할 경우 이런 HTTP요청을 보내게 됩니다. 값을 살펴봅시다. 'Basic bXl1c2VyOm15cGFzcw==' 라는 내용은 base64 encoded인데 해석해버리면 base64_decode(‘bXl1c2VyOm15cGFzcw==’)는 ‘myuser:mypass’ 라는 식으로 됩니다.