Javascript로 세션 전용 쿠키를 만들 수 있는지 궁금합니다. 브라우저를 닫으면 쿠키를 제거해야합니다.
웹 사이트는 HTML 전용이므로 서버에서 아무것도 사용할 수 없으므로 서버 측 스크립트가 사용되지 않습니다.
나는 이것에 대해 http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/를 읽었
지만 이것에 대한 더 많은 정보를 찾을 수 없습니다 … 그래서 나는 이 방법이 신뢰할 수 있는지 궁금합니다.
답변
네, 맞습니다.
expires
파트를 넣지 않으면 JavaScript로 생성 되든 서버에 생성 되든 관계없이 세션 쿠키가 생성됩니다.
답변
더 간단한 해결책은를 사용하는 것 sessionStorage
입니다.이 경우 :
var myVariable = "Hello World";
sessionStorage['myvariable'] = myVariable;
var readValue = sessionStorage['myvariable'];
console.log(readValue);
그러나 sessionStorage
모든 것을 문자열로 저장하므로 배열 / 객체로 작업 할 때 JSON을 사용하여 저장할 수 있습니다.
var myVariable = {a:[1,2,3,4], b:"some text"};
sessionStorage['myvariable'] = JSON.stringify(myVariable);
var readValue = JSON.parse(sessionStorage['myvariable']);
페이지 세션은 브라우저가 열려 있고 페이지를 다시로드하고 복원해도 지속되는 동안 지속됩니다. 새 탭이나 창에서 페이지를 열면 새 세션이 시작됩니다.
따라서 페이지 / 탭을 닫으면 데이터가 손실됩니다.
답변
Java 스크립트로 세션 전용 쿠키를 생성하려면 다음을 사용할 수 있습니다. 이것은 나를 위해 작동합니다.
document.cookie = "cookiename=value; expires=0; path=/";
그런 다음 다음과 같이 쿠키 값을 얻습니다.
//get cookie
var cookiename = getCookie("cookiename");
if (cookiename == "value") {
//write your script
}
//function getCookie
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return "";
}
IE를 지원하려면 완전히 “만료”상태로두고 이것을 사용할 수 있습니다.
document.cookie = "mtracker=somevalue; path=/";
답변
설정 세션 쿠키에 아래 코드를 사용하면 브라우저가 닫힐 때까지 작동합니다. (탭을 닫지 마십시오)
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return false;
}
if(getCookie("KoiMilGaya")) {
//alert('found');
// Cookie found. Display any text like repeat user. // reload, other page visit, close tab and open again..
} else {
//alert('nothing');
// Display popup or anthing here. it shows on first visit only.
// this will load again when user closer browser and open again.
setCookie('KoiMilGaya','1');
}