>  기사  >  웹 프론트엔드  >  JS 작업 쿠키에는 (읽기, 추가 및 삭제)_javascript 기술이 포함됩니다.

JS 작업 쿠키에는 (읽기, 추가 및 삭제)_javascript 기술이 포함됩니다.

WBOY
WBOY원래의
2016-05-16 17:45:231195검색

저는 항상 js를 사용하여 일부 쿠키 작업을 구현했습니다. 오늘은 js의 쿠키 읽기, js의 쿠키 추가, js의 쿠키 삭제 등을 정리했습니다.

코드 복사 코드는 다음과 같습니다.





쿠키 처리 기능 실습(내가 생각한 것이 아닌 직접 작성: 객체 지향 개선) 🎜>< 스크립트 언어="JavaScript" type="text/javascript">
function addCookie(objName,objValue,objHours){//쿠키 추가
var str = objName "=" escape(objValue) ;
if(objHours > 0){//0이면 만료 시간이 설정되지 않으며 브라우저를 닫으면 쿠키가 자동으로 사라집니다.
var date = new Date(); var ms = objHours*3600*1000;
date.setTime(date.getTime() ms);
str = "; 만료=" date.toGMTString()
}
document.cookie = str;
alert("쿠키 추가 성공");
}
function getCookie(objName){//지정된 이름의 쿠키 값을 가져옵니다
var arrStr = document.cookie. Split("; ");
for(var i = 0;i < arrStr.length;i ){
var temp = arrStr[i].split("=")
if( temp[0] == objName) return unescape(temp[ 1]);
}
}
function delCookie(name){//지정된 이름의 쿠키를 삭제하려면 다음을 설정할 수 있습니다. 만료 시간을 과거 시간으로 변경
var date = new Date ()
date.setTime(date.getTime() - 10000)
document.cookie = name "=a;expires="date .toGMTString();
}
//읽기 모든 쿠키 문자열 제거
function allCookie(){//저장된 모든 쿠키 문자열 읽기
var str = document.cookie; str == ""){
str = "쿠키가 저장되지 않았습니다."
}
alert(str)
}
function $(m,n){
문서 반환 .forms[m].elements [n].value;
}
function add_(){
var cookie_name = $("myform","cookie_name")
var cookie_value = $( "myform","cookie_value" );
var cookie_expireHours = $("myform","cookie_expiresHours");
addCookie(cookie_name,cookie_value,cookie_expireHours)
}
function get_();
var cookie_name = $ ("myform","cookie_name");
var cookie_value = getCookie(cookie_name);
alert(cookie_value)
}
function del_(){
var cookie_name = $(" myform","cookie_name");
delCookie(cookie_name)
alert("삭제 성공")
/쿠키 추가
function addCookie(name,value,expires,path,domain){
var str=name "=" escape(value)
if(expires!=""){
var date=new Date() ;
date.setTime(date.getTime()expires*24*3600*1000);//만료 단위는 일수입니다
str =";expires=" date.toGMTString() ;
}
if(path!=""){
str =";path=" path;//쿠키에 접근할 수 있는 디렉터리를 지정하세요
}
if(domain! =""){
str =";domain=" domain;//쿠키에 접근할 수 있는 도메인 지정
}
document.cookie=str;
}
//쿠키 가져오기
function getCookie(name){
var str=document.cookie.split(";")
for(var i=0;ivar str2= str[i].split("=" );
if(str2[0]==name)return unescape(str2[1])
}
}
//쿠키 삭제
function delCookie(name){
var date=new Date();
date.setTime(date.getTime()-10000)
document.cookie=name ”=n;expire=” 날짜.toGMTString()


[개인적으로는 아래가 더 나은 것 같아요! ]
물론 쿠키의 4가지 속성을 소개해야 합니다. 이러한 속성은 다음 형식으로 문자열 값에 추가됩니다.
name=[;expires=][; domain= 이름=<값>][; 도메인=<경로>][; 보안]
<값> , , 는 해당 값으로 대체되어야 합니다. GMT 형식을 사용해야 합니다. Javascript 스크립트 언어에서 날짜 클래스 Date의 .toGMTString() 메소드를 사용하여 GMT 형식의 날짜 값을 얻을 수 있습니다. 대괄호는 이 항목이 선택 사항임을 나타냅니다. 예를 들어, [; secure] 주위의 대괄호는 쿠키를 안전하게 설정하려면 쿠키 문자열 값 끝에 "; secure"를 추가해야 함을 의미합니다. 쿠키 문자열 끝에 "; secure"가 추가되지 않으면 쿠키가 안전하지 않은 것입니다. 쿠키에 꺾쇠 괄호 <> 및 대괄호 []를 추가하지 마십시오(특정 값의 내용이 아닌 경우). 속성을 설정할 때 속성에는 제한이 없으며 순서에 관계없이 설정할 수 있습니다.

다음은 예입니다. 이 예에서는 쿠키 "username"이 15분 후에 만료되도록 설정되어 있으며, 서버의 모든 디렉터리에서 접근할 수 있고, "mydomain"의 모든 서버에서 접근할 수 있습니다. .com' 도메인으로 접근이 가능하며, 보안상태는 안전합니다.
코드 복사 코드는 다음과 같습니다.

// Date()의 생성자는 다음과 같습니다. 밀리초 단위로 설정
// .getTime() 메서드는 시간을 밀리초 단위로 반환합니다
// 따라서 15분 만료를 설정하려면 60000밀리초에 15분을 곱합니다
varexpiration = new Date(( new Date( )).getTime() 15 * 60000);
document.cookie = "username=" escape(form.username.value) "; 만료 ="
expiration.toGMTString() "; 경로= " "/ " "; _
domain=" "mydomain.com" "; secure";
// 특정 쿠키 값을 읽는 함수를 정의합니다. [지정된 이름의 쿠키 객체를 가져옵니다! ]
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name)
// 인덱스가 발견되면 쿠키가 존재합니다.
// 그렇지 않으면 쿠키가 존재하지 않는다는 의미입니다.
if (cookie_pos != -1)
{
// cookie_pos를 값의 시작 부분에 넣고 값에 1을 추가하면 됩니다.
cookie_pos = cookie_name.length 1;
var cookie_end = allcookies.indexOf(";", cookie_pos)
if (cookie_end == -1)
{
cookie_end = allcookies.length ;
}
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
}
// 함수 호출
var cookie_val = getCookie("사용자 이름")

3. 쿠키가 닫힐 때 자동으로 지워지면 쿠키 만료 시간을 설정하면 왜 쓸모가 없나요?
JSP가 쿠키를 어떻게 조작하는지 살펴보겠습니다.
쿠키 개념:
쿠키의 형식은 실제로 서버에서 클라이언트로 전송되는 일반 텍스트 정보입니다. 쿠키가 심각한 보안 위협을 초래할 수 있다고 다들 말하지만, 서버는 쿠키를 읽을 때 서버에 관련된 정보만 읽을 수 있습니다. 또한, 브라우저는 일반적으로 300개의 쿠키만 저장할 수 있으며, 각 사이트는 최대 20개의 쿠키를 저장할 수 있습니다. 또한, 각 쿠키의 크기는 이제 4K로, 쿠키도 전혀 차지하지 않습니다. 예를 들어 쿠키 생존이 설정된 경우 시간이 1분이면 쿠키는 1분 후에 브라우저에 의해 삭제됩니다.
쿠키 버전:
현재 두 가지 버전이 있습니다. 🎜>: 버전 0: Netscape에서 작성되었습니다. 호환성을 유지하기 위해 Java는 현재 버전 0만 지원합니다. 공백, 대괄호, 등호(=)가 없어야 합니다. ), 쉼표, 큰따옴표 또는 슬래시가 쿠키 내용에 포함됩니다.
버전 1: RFC 2109 문서를 기반으로 많은 제한 사항이 완화되었습니다. 그러나 호환성을 유지하려면 이러한 특수 문자를 최대한 사용하지 마세요.
쿠키 JSP에서의 연산 : 유형 메소드 이름 메소드 설명
String getComment() 쿠키에 주석을 반환하며, 주석이 없으면 null 값을 반환합니다.
String getDomain() 쿠키에 적용 가능한 도메인 이름을 반환합니다. 쿠키의 쿠키. 검색을 나타내려면 getDomain() 메서드를 사용하십시오. 서버는 동일한 도메인에 있는 다른 서버에 쿠키를 반환하며, 일반적으로 쿠키는 쿠키를 보낸 서버와 정확히 동일한 이름을 가진 서버에만 반환됩니다. 도메인 이름은 점으로 시작해야 합니다.
int getMaxAge()는 쿠키가 만료되기 전의 최대 시간(초)을 반환합니다.
String getName()은 쿠키의 이름을 반환합니다.
String getPath()는 쿠키가 적용되는 경로를 반환합니다. 경로를 지정하지 않으면 현재 페이지가 있는 디렉터리와 하위 디렉터리의 모든 페이지에 쿠키가 반환됩니다.
부울 getSecure()는 브라우저가 보안 프로토콜을 통해 쿠키를 보내는 경우 참 값을 반환하고, 브라우저가 표준 프로토콜을 사용하는 경우 거짓 값을 반환합니다.
String getValue()는 쿠키 값을 반환합니다. 저자는 나중에 getValue/setValue에 대해서도 자세히 소개할 예정입니다.
int getVersion()은 쿠키가 준수하는 프로토콜 버전을 반환합니다.
void setComment(String Purpose) 쿠키에 주석을 설정합니다.
void setDomain(String Pattern) 쿠키에 쿠키의 도메인 이름을 설정합니다.
void setMaxAge(int expiry) 쿠키 만료 시간을 초 단위로 설정합니다. .
void setPath(String uri)는 쿠키 경로를 지정합니다.
void setSecure(boolean flag) HTTPS 또는 SSL과 같이 브라우저에서 사용하는 보안 프로토콜을 나타냅니다.
void setValue(String newValue)는 쿠키가 생성된 후 새 값을 설정합니다.
void setVersion(int v) 쿠키가 따르는 프로토콜 버전 설정

간단한 예 1. Write Cookie --- writecookie.jsp
---- - ------------------------------------------------- - ------

코드 복사 코드는 다음과 같습니다.
<% @ page contentType="text/html; charset=ISO8859_1" %>
<%
Cookie _cookie=new Cookie("user_delfancom", "delfan")
_cookie.setMaxAge(30*60) ); // 쿠키 생존 시간을 30분으로 설정
response.addCookie(_cookie) // 클라이언트 하드 디스크에 쓰기
out.print("쿠키 쓰기 완료")
%>

2. Cookie.jsp 읽기 --- readcookie.jsp
------------- ----- ---------------------

코드 복사 코드는 다음과 같습니다.
<%
쿠키 쿠키[]=request.getCookies() // 읽기 해당 디렉터리에 있는 모든 쿠키를 쿠키 배열에 저장합니다.
Cookie sCookie=null;
String sname=null;
String name=null
if(cookies==null) // 쿠키가 없습니다
out.print ("쿠키 없음")
else
{
out.print(cookies.length "
")
for(int i =0;i{
sCookie=cookies[i]
sname=sCookie.getName(); getValue();
out.println(sname "->" name "
")
}
}
%>


주의할 점 2가지 질문
: 1. 쿠키가 해당 경로, 즉 writecookie.jsp와 readcookie.jsp가 합의된 디렉터리에 배치되어야 하는 경우, 그렇지 않은 경우에는 문제가 있습니다. 같은 디렉터리에 readcookie.jsp가 있는 경로로 경로를 설정해야 합니다. 2. 쿠키 배열을 읽을 때 비어 있는지(null) 확인해야 합니다. 인터넷은 이 점을 쓰지 마세요.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.