Request.UrlReferrer.ToString() VS Request.ServerVariables["HTTP_REFERER"] 결과 값이 다른이유를 모르겠습니다

Request.UrlReferrer.ToString() VS Request.ServerVariables[“HTTP_REFERER”] 결과 값이 다른이유를 모르겠습니다.

Request.ServerVariables[“HTTP_REFERER”] 할 경우 URL뒤에 인코딩 된 파라메터 원본 그대로 요청되고 있지만…

Request.UrlReferrer.ToString() 할 경우 URL디코딩 처리된 URL로 로깅 되는데…이유를 모르겠습니다.
혹시 위 2개가 다른 이유를 아시는 분 답변 부탁 드립니다.
감사합니다.

좋아요 1

Request.UrlReferrer의 경우 System.Uri를 반환합니다. 그리고 System.Uri의 ToString() 메서드의 기본 동작에 따라 말씀하신대로 디코딩 처리된 상태로 URL이 반환되게됩니다.

반면 Request.ServerVariables의 경우 System.Collections.Specialized.NameValueCollection 형태의 컬렉션 참조를 반환하며, 이 컬렉션의 인덱서 오퍼레이터는 별도의 URL 관련 변환 작업을 처리하지 않고 as-is로 서버 변수를 가져오거나 반환하는 동작만 수행하므로 원래 받았던 데이터를 그대로 내보내기 때문에 말씀하신대로 원본 그대로 반환됩니다.

따라서 상황과 필요에 따라서 적절한 방법으로 데이터를 가져오실 수 있을 것입니다.

정말 좋은 내용으로 답변 해주셔서 감사합니다.

좋아요 1