Nice programing

Response.Cookies보다 Request.Cookies를 언제 사용합니까?

nicepro 2020. 12. 6. 22:02
반응형

Response.Cookies보다 Request.Cookies를 언제 사용합니까?


ASP.NET의 응답이므로 페이지 이벤트 (예 :로드)에서 응답을 사용하고 처리를 위해 ASP.NET으로 이동하는 응답이므로 단추를 누를 때 요청을 사용합니까? 아니면 더 많은 것이 있습니까?


그들은 다른 것들 2 번이 저장 [응답, 다른 READS [요청]

쿠키 (정보학)에서 :) 문자열 유형의 객체를 포함하는 일정 기간 동안 작은 파일을 저장 합니다.

.NET 프레임 워크에서 다음과 같이 쿠키저장합니다 .

HttpCookie myCookie = new HttpCookie("MyTestCookie");
DateTime now = DateTime.Now;

// Set the cookie value.
myCookie.Value = now.ToString();
// Set the cookie expiration date.
myCookie.Expires = now.AddMinutes(1);

// Add the cookie.
Response.Cookies.Add(myCookie);

Response.Write("<p> The cookie has been written.");

1 분 동안 사용할 수있는 쿠키를 작성했습니다 ... 일반적으로 지금 수행합니다 .AddMonth (1) 한 달 동안 쿠키를 저장할 수 있습니다.

쿠키검색 하려면 다음과 같이 요청 (요청중인)을 사용합니다.

HttpCookie myCookie = new HttpCookie("MyTestCookie");
myCookie = Request.Cookies["MyTestCookie"];

// Read the cookie information and display it.
if (myCookie != null)
   Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
else
   Response.Write("not found");

생각해 내다:

쿠키를 삭제하려면 직접 코드가 없습니다. 트릭은 이미 지나간 만료 날짜 ( 예 : now) 와 함께 동일한 쿠키 이름 저장 하는 것입니다 .AddMinutes (-1)

쿠키가 삭제됩니다.

보시다시피 쿠키의 수명이 만료 될 때마다 해당 파일은 시스템에서 자동으로 삭제됩니다.


웹 애플리케이션에서 요청은 브라우저에서 오는 것이고 응답은 서버가 다시 보내는 것입니다. 브라우저에서 쿠키 또는 쿠키 데이터를 확인할 때 Request.Cookies를 사용해야합니다. 브라우저에 보낼 쿠키를 구성 할 때 Response.Cookies에 추가해야합니다.


쿠키를 작성할 때 응답을 사용하지만 읽기는 상황에 따라 달라질 수 있습니다. 일반적으로 요청에서 읽지 만 애플리케이션이 방금 작성되거나 업데이트 된 쿠키를 가져 오려고 시도하고 브라우저로의 왕복이 발생하지 않은 경우 응답에서 읽어야 할 수 있습니다.

저는이 패턴을 한동안 사용해 왔으며 저에게 잘 작동합니다.

public void WriteCookie(string name, string value)
{
    var cookie = new HttpCookie(name, value);
    HttpContext.Current.Response.Cookies.Set(cookie);
}


public string ReadCookie(string name)
{
    if (HttpContext.Current.Response.Cookies.AllKeys.Contains(name))
    {
        var cookie = HttpContext.Current.Response.Cookies[name];
        return cookie.Value;
    }

    if (HttpContext.Current.Request.Cookies.AllKeys.Contains(name))
    {
        var cookie = HttpContext.Current.Request.Cookies[name];
        return cookie.Value;
    }

    return null;
}

쿠키는 Request.Cookies 컬렉션의 브라우저에서 제공됩니다. 전송 된 쿠키를 읽는 곳입니다.

쿠키를 브라우저로 다시 보내려면 Response.Cookies 컬렉션에 넣으십시오.

If you want to delete a cookie, you have to tell the browser to remove it by sending the cookie with an expiration date that has passed. The browser is using the local time of the client computer so if you are using the server time to create a date, be sure to subtract at least one day to be sure that it has actually passed in the clients local time.


When i create or update a cookie in .NET i normally do it to both the request and response cookie collection. That way you can be sure if you try to read the cookie further down the page request sequence it will have the correct information.


Andrew's Code gave an error in "AllKeys.Contains" Method. So I corrected a little..

public void WriteCookie(string strCookieName, string strCookieValue)
    {
        var hcCookie = new HttpCookie(strCookieName, strCookieValue);
        HttpContext.Current.Response.Cookies.Set(hcCookie);
    }


    public string ReadCookie(string strCookieName)
    {    
        foreach (string strCookie in HttpContext.Current.Response.Cookies.AllKeys)
        {
            if (strCookie == strCookieName)
            {
                return HttpContext.Current.Response.Cookies[strCookie].Value;
            }
        }         

        foreach (string strCookie in HttpContext.Current.Request.Cookies.AllKeys)
        {
            if (strCookie == strCookieName)
            {
                return HttpContext.Current.Request.Cookies[strCookie].Value;
            }
        }

        return null;
    }

참고URL : https://stackoverflow.com/questions/573922/when-to-use-request-cookies-over-response-cookies

반응형