2012-12-17 6 views
1

현재 로그인 및 기본값의 두 페이지가있는 웹 응용 프로그램이 있습니다.HTTP 헤더 읽기 및 쓰기

로그인 페이지의 코드 뒤에 로그인 프로 시저가 실행될 때 HTTP 헤더로 반환되는 2x GUID를 쓸데없이 노력하고 있습니다. 그런 다음 기본 페이지의 페이지로드에서이 내용을 읽으려고합니다.

Request.Headers.Add("GUID", strGUID); 
Response.Headers.Add("GUID", strGUID); 

기본 페이지 I의 값을 검색하려면 .... 나는 C#에서 HTTP 헤더에 오히려 경험 그리고 난이 성공하지 로그인에서의 값을 추가 이전 다음 시도 ... 사용

strGUID = Response.Headers.Get("GUID"); 

을 시도하고 있었다 그리고 마지막으로 내가 그것으로 쌓여했던 모든 사용자 정의 쓰레기의 헤더를 취소, 나는 ... 사용하려고했다

Response.Headers.Clear(); 

저는 인터넷을 둘러 보았습니다. 그러나이 작업이나 유사한 작업을 수행하는 방법에 대한 단계별 설명에 대한 자습서를 찾을 수 없습니다.

+1

정확히 무엇을하려합니까? 정확히 한 요청에 대해 값을 저장하기를 원하는 것처럼 들립니다. 이를 위해 나는 [HttpContext.Current.Items'] (http://www.4guysfromrolla.com/articles/060904-1.aspx)을 살펴보기를 권한다. – Earlz

+0

기본적으로 나는 어떤 데이터 (토큰/GUID)을 로그인 페이지의 헤더에 추가하면 기본 페이지의 pageload에서 유효성을 검사하고 유효하지 않은 경우 사용자를 리디렉션 할 수 있습니다. –

답변

4

HTTP는 상태 비 저장 프로토콜이므로 HTTP 헤더를 사용하여 요청간에 데이터를 공유 할 수 없습니다. 나는 코드 자체에 아무런 문제가 보이지 않지만 한 응답 (login.aspx)으로 클라이언트에 전송 된 HTTP 헤더가 다음 요청 (default.aspx)에서 서버로 다시 보내 져야한다고 말하는 규칙은 없습니다.). 리디렉션 자체는 뒤에 오는 페이지보기와 별개이기 때문에 login.aspx에서 default.aspx로 리디렉션을 수행하는 경우에도 마찬가지입니다.

당신이 찾고있는 것은 하나 이상의 요청에 대해 마지막으로 저장되는 저장 공간입니다. 쿠키를 사용하여 브라우저에 값을 저장할 수 있습니다.

// Set in login.aspx 
Response.Cookies.Add(new HttpCookie("Guid", Guid.NewGuid()) 

// Read in default.aspx 
HttpCookie token = Request.Cookies["Guid"]; 

... 또는 서버에 값을 저장하는 세션 저장소.

// Set in login.aspx 
Session["Guid"] = Guid.NewGuid(); 

// Read in default.aspx 
Guid token = (Guid) Session["Guid"]; 

당신은 더 나은 헤더가 전송되는 방법 HTTP 이해하기 위해 HTTP 트래픽을 검사 할 수 Fiddler 같은 도구를 사용할 수 있습니다.