반응형

5. http header 정보 설정.


이전 포스팅에서 http 요청에 응답을 받아 파일로 저장했었다.

저장한 파일은 메모장이나 기타 텍스트 에디터 툴에서 내용을 확인해 볼 수 있었다.


이번에는 앞서 언급한 http header를 설정함으로써 웹 서버가 어떻게 응답하는지 살펴보자.

아래의 코드를 실행해보면 daum 서버에 웹 페이지를 요청하고 response_basic.html 파일에 응답받은 데이터를 저장한다.


저장된 response_basic.html 를 실행해보자. 

개인 PC의 기본 브라우저가 해당 html 파일을 읽어와 적절하게 화면에 보여줄 것이다.

앞선 포스팅과 응답받는 데이터가 달라진 것은 아니고 파일을 오픈하고 데이터를 쓰는 방법에서 차이가 있었을 뿐 (w->wb)

웹서버에서 응답받는 내용은 변함이 없다. 




: response_basic.html 파일을 더블클릭. 

일반적으로 웹브라우저를 사용해서 살펴보던 웹페이지와 똑같은 모습이다.


사용자가 웹브라우저(사파리, IE, 크롬 등)에서 url을 입력해 웹페이지를 읽어오는 과정도

동일하게 응답과 요청 과정을 통해

웹 서버에서 웹 페이지를 전달받고 그 내용을 사용자에게 표시하는 것이다.


이번에는 http header 정보를 설정해보도록 하자.

아래 코드는 http header 정보를 설정해 http 통신을 하는 코드이다. 



우선 hdr 변수에 의도하는 http header정보를 작성하고

Request 객체를 만드는 과정에서 headers 매개변수에 hdr 변수를 전달하자.

http 통신이 끝난 뒤 응답받은 내용이 저장되어 있는 response_iphone.html 파일을 열어보도록 하자.



:response_iphone.html 의 실행 결과.


http 요청을 하는 url은 "http://www.daum.net"으로 변함이 없었다.(웹서버 주소는 변함이 없었다)

이는 http header 정보에 따라 웹 서버가 다르게 응답하는 것이다.


hdr 변수에 저장되는 header 정보중 user-agent 항목을 살펴볼 필요가 있다. 

실행한 소스에서는 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1'로 설정되어 있는데 이는 아이폰 6에 설치되어 있는 사파리 웹브라우저가 http 요청시 설정하는 user agent 정보이다.


웹서버에서는 header 정보를 확인해 어떤 브라우저에서 온 요청인지 확인을 하고 

(위의 코드에서는 웹서버가 아이폰에서 사용하는 사파리 브라우저에서 온 요청이라고 생각한 것이다.)

그에 알맞는 적절한 웹페이지를 응답하게 되는 것이다.


이와 같이 다양한 웹브라우저의 user-agent를 

사용자 의도에 따라 http header에 설정해 

상황에 따라 적절히 활용할 수 있다. 


모바일 웹페이지를 작성하는 입장에서

정상동작을 확인해보기 위해 매번 스마트폰으로 접속해 확인해기전에

우선적으로 이와 같은 방법으로 정상 동작 여부 등을 확인해보던지


상대적으로 필요한 정보가 집약되어 있는 모바일 웹페이지를 파싱해서 

필요한 정보를 찾아내던지 등


이후에도 필요에 따라서 적절히 활용해보도록 하자.


반응형