2017-05-18 1 views
0

내가하고 싶은 것은 .NET 환경에서 여러 브라우저에 대해 다른 쿠키 값을 생성하는 것입니다 (같은 기능을 가진 캐시도 괜찮습니다. 캐시 사용)..net 다른 브라우저에서 쿠키 클라이언트 측 생성하기

사용자가 서로 다른 브라우저에서 다른 쿠키 값을 사용할 수있는 (예 : Chrome과 Firefox 모두 동시에) 다른 브라우저에서 내 웹 앱을 동시에 열어 볼 수 있기를 바랍니다 (예 : , 쿠키 이름은 "MyCookieKey"입니다. Chrome 용 값 V1을 저장하고 Firefox 용으로 다른 값 V2를 저장하고 싶습니다.) 쿠키는 클라이언트 측에서만 유효합니다.

I (별도) 지금까지 시도했습니다 무엇 :

HttpContext.Current.Request.Cookies, 

HttpContext.Current.Response.Cookies, 

HttpCookieCollection. 

것은 내가 HttpContext.Current.Request 또는 HttpContext.Current.Response, 내 응용 프로그램이 작동하지 않았다 사용한 적이 때 (내가 정확히 어떤 문제를 알아낼 수) .

HttpCookieCollection을 사용했을 때 다른 브라우저에서 쿠키를 공유했습니다.

감사합니다.

+0

브라우저는 쿠키를 '공유'해서는 안됩니다. 두 쿠키 모두에 동일한 쿠키를 보냈다는 의미입니까? 그렇다면 브라우저 유형을 어떻게 테스트하고 있습니까? – Orangesandlemons

+0

"도메인"이라는 쿠키를 만들었습니다. 내 앱 사용자는 url로 변경하고 다른 유사한 웹 앱을 연결할 수 있습니다. 해당 쿠키에서 응용 프로그램의 선택된 도메인을 유지합니다. 예를 들어 나는 website1.com과 website2.com이라는 두 개의 도메인을 가지고 있으며 사용자는 도메인을 변경할 수 있습니다. 응용 프로그램의 기본 URL은 website1.com이고, 응용 프로그램을 사용하는 사용자는 도메인을 website2로 변경할 수 있습니다. 사용자가 Chrome에서 도메인을 변경하면 브라우저가 닫히거나 사용자가 로그 아웃 할 때까지 앱이 새로운 선택한 URL (website2.com)에서 실행됩니다. 그러나 다른 브라우저 (예 : Firefox)의 앱 도메인에도 영향을줍니다. ++ –

+0

++ 사용자가 Chrome에서 website2.com을 선택하면 Firefox에서 기본 URL이 website2.com으로 변경되거나 그 반대가됩니다. 내가 원하는 것은 사용자가 도메인을 변경하여 브라우저에 보관할 수 있지만 다른 브라우저에는 영향을주지 않습니다. 도메인은 클라이언트 측 세션과 각기 다른 브라우저에 대해 별도로 세션에 대해 보관해야하는 항목이 있으므로 여기에 대한 예입니다. 테스트에 관해서는, 나는 다른 브라우저를위한 나의 프로그램을 동시에 럼주 화 ( )하고있다. 나는 그것이 내가 원하는 것처럼 작동하지 않는다는 것을 안다. –

답변

0

웹 앱은 일반적으로 브라우저에 액세스하는 별도의 컴퓨터를 추적하지 않고 다른 브라우저 Sessions을 추적합니다. 앱에 연결하는 클라이언트의 각 인스턴스는 새로운 세션을 생성하며이 세션에 대한 정보는 일반적으로 ASP.NET_SessionId이라는 특수 쿠키를 통해 관리됩니다. 세션을 추적하기위한 구성은 쿠키 이름을 변경하거나 비 쿠키 추적을 사용할 수있게합니다. 세션의 추적은 몇 가지 다른 방법으로 활용되어 별도의 브라우저를 구별 할 수 있습니다.

한 가지 방법은 응용 프로그램에서 세션 수를 추적하는 것입니다. 이는 global.asax을 통해 수행되고 다른 응용 프로그램 및 세션 이벤트에 추가됩니다. SO 스레드에 How to count Sessions in ASP.Net이라는 몇 가지 대답이 있습니다.

protected void Application_Start() { 
    Application["LiveSessionsCount"] = 0; 
} 

protected void Session_Start() { 
    Application["LiveSessionsCount"] = ((int)Application["LiveSessionsCount"]) + 1; 
} 

protected void Session_End() { 
    Application["LiveSessionsCount"] = ((int) Application["LiveSessionsCount"]) - 1; 
} 

그리고 쿠키를 설정할 시간이되면. 응용 프로그램 개체에 액세스하여 개수를 검색하고이를 사용하여 다른 쿠키 값을 만들 수 있습니다.

int LiveSessionsCount = (int) Application["LiveSessionsCount"]; 
string MyCookieValue = "V" + LiveSessionCount.ToString(); 
Response.Cookies["MyCookieKey"] = MyCookieValue; 

이 문제는 응용 프로그램이 현재 세션을 추적하고있는 것입니다. 이것은 사이트 시작 및 종료에 대한 연결에 따라 증가 및 감소합니다. 당신이 할 수있는 일은 초를 추가하는 것입니다. 응용 프로그램/세션에서 유사한 방법을 사용하는 응용 프로그램 변수는 0에서 시작하여 증가합니다. 그러나 세션 종료 값에서 해당 값을 더하지 마십시오. 그러면 앱주기 내 총 세션 수입니다. 사이트가 다시 시작되면 0으로 되돌아갑니다.

자연스럽게 다른 방법을 사용할 수 있습니다. 내가 작업하는 사이트 중 하나가 모든 연결을 데이터베이스에 기록하고 그런 식으로 작업했습니다. 이는 할 수있는 것에 대한 아이디어를 제공하기위한 것입니다. 필자는 문서화 된 링크를 읽고 응용 프로그램 및 세션 객체를 더 잘 이해할 수 있습니다. 세션 쿠키뿐만 아니라

+0

감사합니다. 나는 그것이 효과가 있는지 생각해보고 쓸 것이다. –