Session、LocalStorage、Cache-Control

6423 단어

1. 사용자가 쿠키를 변경할 수 있는 문제를 어떻게 해결합니까


변수sessions를 설명합니다. 이것은hash입니다.
let sessions = {
  
}

로그인 때문에 이메일을 사용자에게 누설하였다
if(found){
        response.setHeader('Set-Cookie':`sign_in_email=${email}`)
        response.statusCode = 200
      }

우리는 이렇게 쓰지 않는다. 우리는 그것에게sessionID를 만들어 준다
if(found){
        let sessionId = Math.random() * 100000// 
        sessions[sessionId] = {sign_in_email:email}// email cookie , email sessions 
        response.setHeader('Set-Cookie':`sessionId=${sessionId}`)// sessionId
        response.statusCode = 200
      }

서버에 있습니다.js에서 루트 수정
if(path === '/'){
    var string = fs.readFileSync('./index.html','utf8')
    let cookies = ''
    if(request.headers.cookie){
      cookies = request.headers.cookie.split('; ')
    }
    let hash ={}
    for(let i=0;i

무작위 수가 가장 안전하기 때문에 사용자의 정보를 조회할 수 없다.
면접관이 묻는다: 세션이 뭐예요?1. 서버가 쿠키를 통해 사용자에게 SessionId 2.SessionId는 서버의 작은 메모리 3에 해당합니다.사용자가 서버에 접근할 때마다 서버는 SessionId를 통해 대응하는 session을 읽고 사용자의 프라이버시 정보를 안다
쿠키의 3가지 특징 요약: 1.서버는 Set-Cookie 헤더를 통해 클라이언트에게 문자열 2를 제공합니다.클라이언트가 같은 도메인 이름의 웹 페이지에 접근할 때마다 이 문자열을 가져가야 합니다.클라이언트는 이 쿠키를 일정 시간 내에 저장해야 합니다. 4.쿠키는 기본적으로 사용자가 페이지를 닫으면 자동으로 효력을 상실하지만, 백그라운드 코드는 쿠키의 만료 시간을 임의로 설정할 수 있습니다.
Session의 특징: 만약에 내가 사용자의 ID나 이메일을 쿠키에 저장하면 사용자가 직접 변경할 수 있다.sessionId(랜덤 수)를 쿠키를 통해 클라이언트에게 보내기 2.클라이언트가 서버에 접근할 때 서버가 sessionId 3을 읽습니다.서버에 모든 세션 4를 저장하는 메모리 (해시 테이블) 가 있습니다.sessionId를 통해 우리는 사용자에 대응하는 프라이버시 정보를 얻을 수 있습니다.이 메모리 (하시 테이블) 는 서버의 모든session 이다

2. LocalStorage 소개 및 애플리케이션


LocalStorage는 html5에서 제공하는 API로 실질적으로hash(브라우저의 것)이고session은 서버의 해시표입니다.자주 사용하는 것은localstorage가 있다.setItem('a','1')、localstorage.getItem('a')、localstorage.clear () 는 현재 페이지의 해시를 조작하는 데 사용됩니다.CD의 메모리에 지속적으로 저장됩니다.LocalStorage의 가장 전형적인 응용 프로그램은 다음과 같습니다.

    let already = localStorage.getItem(' ')
    if(!already){
        alert(' , , ……')
        localStorage.setItem(' ',true)
    }else{
        
    }
    

LocalStorage의 특징: 1.LocalStorage는 HTTP와 무관합니다. 2.HTTP에는 LocalStorage 값이 없습니다. 3.같은 도메인 이름의 페이지만 서로 LocalStorage를 읽을 수 있습니다(같은 소스만큼 엄격하지 않음). 4.도메인 이름당 LocalStorage 최대 저장량은 5Mb 정도(브라우저마다 다름)5.상용 장면: 사용자에게 힌트를 준 적이 있는지 기록합니다(쓸모없는 민감하지 않은 정보는 없고 비밀번호를 기록할 수 없습니다).LocalStorage는 사용자가 캐시를 정리하지 않는 한 영구적으로 유효합니다. (ctrl+shift+delete, 설정에 들어가서 고급에서'쿠키 및 기타 사이트 데이터'를 선택하고'데이터 지우기'를 누르면 LocalStorage가 정리됩니다.)
SessionStorage(세션 스토리지)의 특징: 1, 2, 3, 4와 같은 5.세션 종료 후 사용자가 페이지를 닫으면 SessionStorage가 자동으로 비활성화됩니다.

3. 면접 문제:

  • 쿠키와 세션은 어떤 관계입니까?일반적으로 Session은 쿠키를 바탕으로 이루어진다. 왜냐하면 Session은 반드시 sessionId를 쿠키 안에 넣고 클라이언트에게 보내야 하기 때문이다. SessionId가 없으면 Session이 없다.Session은 Cookie에 의존하고 Cookie는 Session의 초석이다.
  • 쿠키와 LocalStorage의 차이점은 무엇입니까?(1) 쿠키는 요청할 때마다 브라우저에 의해 서버에 전달되고 LocalStorage는 브라우저에 의해 서버에 전달되지 않는다. 왜냐하면 LocalStorage는 HTTP와 무관하기 때문이다.(2) 일반적으로 쿠키는 4k, LocalStorage는 5Mb3입니다.LocalStorage와 SessionStorage의 차이점은 무엇입니까?사용자가 캐시를 정리하지 않는 한 LocalStorage는 영구적으로 유효합니다.세션 종료 후 사용자가 페이지를 닫으면 SessionStorage가 자동으로 비활성화됩니다.

  • Cookie 기반 세션 없음(초강불기)


    4. 캐시 제어 Cache-Control


    어떤 요청을 캐시하고 싶으면 response.setHeader('Cache-Control','max-age=30') 하나를 주십시오. 그러면 그 동안 그는 영원히 당신에게 요청하지 않을 것입니다. 그러면 다운로드 시간은 0입니다.
    왜 첫 페이지에 Cache-Control을 설정할 수 없습니까?Chrome은 설정된 시간 내에 코드가 업데이트되더라도 최신 버전을 얻을 수 없습니다. 사용자가 새로 고침한 것은 모두 낡은 캐시입니다. 위험이 있습니다.입구를 남겨야 하는데, 일반적으로 첫 페이지(특히 html)는 캐시를 설정하지 않는다.css와 js에 설정된max-age=10년, 업데이트가 있으면 URL을 변경합니다.css?v=2(또는.js?v=2), 이전의 캐시를 사용하지 않고 최신 버전으로 업그레이드합니다
    요약: Cache-Control의 기능: Cache-Control은 브라우저가 한동안 브라우저에 접근하지 않고 로컬 하드디스크나 메모리로 응답하도록 할 수 있습니다. 이렇게 하면 요청도 없습니다.업데이트를 하려면 입구 (일반적으로 html) 에서 URL을 조금만 변경하면 캐시를 사용하지 않고 브라우저가 최신 버전을 다운로드합니다.

    5. Expires

    Cache-Control 응답 헤더에 "max-age"또는 "s-max-age"명령을 설정하면 Expires 헤더는 무시됩니다.
    Cache-Control을 우선 사용하며 Expires는 이전 버전으로 업그레이드되었습니다.차이점은 Cache-Control이 만료된 시간이 얼마나 되는지, Expires가 만료된 시간이 언제인지입니다.

    6. Etag


    Etag는 파일 버전 번호를 주는md5는 요약 알고리즘으로 하나의 파일을 문자열로 만든다. 만약에 이 파일이 어느 곳에서 바뀌면 차이가 큰 문자열로 변하고 하나의 내용이 하나의md5에 대응한다.만약 하나의 내용 차이가 매우 작다면md5가 계산한 문자열의 차이가 매우 크다. 즉, 이것은 작은 차이를 확대할 수 있다.
    만약 당신의md5가 내가 지난번에 저장한md5와 같다면, 다운로드할 필요가 없다는 것을 설명합니다

    7. 수업 후 문제 및 답안

  • 쿠키와 세션의 차이 1.쿠키는 클라이언트에 저장되어 로컬 하드디스크에 저장되며, 요청할 때마다 도메인 이름에 대한 쿠키 값을 가지고 요청과 함께 서버에 전송됩니다.2. Session은 서버의 메모리에 저장되며 Session ID는 Cookie를 통해 클라이언트에게 전송됩니다.
  • Cookie와 LocalStorage의 차이 (1) Cookie는 요청할 때마다 브라우저에 의해 서버에 전달되고 LocalStorage는 브라우저에 의해 서버에 전달되지 않는다. 왜냐하면 LocalStorage는 HTTP와 무관하기 때문이다.(2) 저장 공간의 크기가 다르다.일반적으로 쿠키는 4k에 불과하고 LocalStorage는 5Mb(3) 만료 시간이 다르다.쿠키는 기본적으로 사용자가 페이지를 닫으면 자동으로 효력을 상실하지만, 백그라운드 코드는 쿠키의 만료 시간을 임의로 설정할 수 있습니다.사용자가 캐시를 정리하지 않는 한 LocalStorage는 영구적으로 유효합니다.
  • LocalStorage와 SessionStorage의 차이점1.사용자가 캐시를 정리하지 않는 한 LocalStorage는 영구적으로 유효합니다.2. SessionStorage는 사용자가 페이지를 닫으면 (세션이 종료됨) 자동으로 효력을 상실합니다.
  • 쿠키는 만료 시간을 어떻게 설정합니까?쿠키는 어떻게 삭제합니까?(1) 쿠키 필드에서 만료 시간을 설정하는 방식: response.setHeader('Expires,'xxx') xxx를 그리니치 시간으로 설정하거나 response.setHeader('Cache-Control','max-age=yyy') yyyy를 설정하면 몇 초 후 쿠키가 효력을 상실합니다.(2) 쿠키에 만료 시간을 설정하면 자동으로 삭제 document.cookie = 'test=xxxx;Expires='+new Date(0).toGMTString() 또는 document.cookie = 'test=xxxx;max-age=0'//이 방법으로 쿠키를 즉시 삭제
  • Cache-Control: max-age=1000 캐시와 ETag의 캐시는 어떤 차이가 있습니까?(1)('Cache-Control','max-age=1000')는 캐시 만료 시간을 1000초로 설정한 후 이 기간 동안 캐시를 우선적으로 사용하며 HTTP 요청이 발생하지 않습니다.(2) Etag는 요청을 보내야 합니다.Etag는 마커 (md5 문자열) 를 설정하고 이 자원을 다시 가져올 때 요청에 If-None-Match:xxx 를 추가하면 이 마커를 비교합니다. 바뀌지 않으면 304 상태 코드를 되돌려줍니다. 파일이 바뀌지 않았으면 계속 사용할 수 있고 바뀌면 새 내용을 되돌려줍니다.
  • 좋은 웹페이지 즐겨찾기