本文目錄一覽:
- 1、js 在chrome下無法對cookie進行操作,求解決方案
- 2、javascript無法寫入cookie,跪求解決辦法
- 3、js設置不了cookie
- 4、js 怎麼重新設置cookie
- 5、js設置cookie的簡單方法
- 6、深入理解cookie
js 在chrome下無法對cookie進行操作,求解決方案
此函數兼容IE和火狐.Chrome應該在可以.你可以試試
寫入cookies:setCookie(“Name”,”Value”);
讀取cookies:getCookie(“Name”);
function getCookie(name){
var arg = name + “=”;
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i clen){
var j = i + alen;
if(document.cookie.substring(i, j) == arg)
return getCookieVal(j);
i = document.cookie.indexOf(” “, i) + 1;
if(i == 0) break;
}
return null;
}
function setCookie(name,value){
var argv = setCookie.arguments;
var argc = setCookie.arguments.length;
var expires = (argc 2) ? argv[2] : null;
var path = (argc 3) ? argv[3] : null;
var domain = (argc 4) ? argv[4] : null;
var secure = (argc 5) ? argv[5] : false;
document.cookie = name + “=” + escape (value) +
((expires == null) ? “” : (“; expires=” + expires.toUTCString())) +
((path == null) ? “” : (“; path=” + path)) +
((domain == null) ? “” : (“; domain=” + domain)) +
((secure == true) ? “; secure” : “”);
}
function getCookieVal(offset){
var endstr = document.cookie.indexOf (“;”, offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
javascript無法寫入cookie,跪求解決辦法
您好:給您寫一個讀寫Cookei的js方法.直接用就可以
//寫cookie操作,調用方法setCookie(name,value);
function setCookie(name, value, hours, path, domain, secure) {
var cdata = name + “=” + value;
if (hours) {
var d = new Date();
d.setHours(d.getHours() + hours);
cdata += “; expires=” + d.toGMTString();
}
cdata += path ? (“; path=” + path) : “”;
cdata += domain ? (“; domain=” + domain) : “”;
cdata += secure ? (“; secure=” + secure) : “”;
document.cookie = cdata;
}
//讀cookie操作
function getCookie(name) {
var reg = eval(“/(?:^|;\\s*)” + name + “=([^=]+)(?:;|$)/”);
return reg.test(document.cookie) ? RegExp.$1 : “”;
}
//刪除cookie操作
function removeCookie(name, path, domain) {
this.setCookie(name, “”, -1, path, domain);
}
如果幫到您,希望採納哦
js設置不了cookie
本地單純的一個html文件(沒有伺服器歸屬)在谷歌瀏覽器中cookie無效,其它瀏覽器好像都可以正常讀寫的,如果你確定cookie.js沒有問題的話,注意一下id是不是重複了(你上面的代碼就出現了id重複),還有body不是在head裡面的
js 怎麼重新設置cookie
這個看你有沒有使用cookie的插件
如果使用,可以看看具體的插件使用指導
例如:不同的 系統可能會用不同的創建,像傲隆盛 jquery.cookie.js或者看如下的小案例:
1.生成一個cookie,名稱為user,內容為liayun:
$.cookie(“user”,”liayun”);
2.cookie的參數設置:
$.cookie(“user”,”liayun”, {
expires:7, //過期時間,7天後過期
path:”/”, //根目錄,path的作用就是設置路徑,根目錄到底所謂何???
});
$.cookie(“aaa”,”bbb”, {
//domain:”” //設置域名,可以發現名為aaa的cookie並沒有建立,為何???
secure:true //發送條件:僅限加密連接 默認為false,需要使用安全協議https
});
綜上所述,除了expires這個參數有用,其他根本就沒什麼鳥用!!!
3.讀取cookie數據:
alert($.cookie(“user”)); //liayun
alert($.cookie(“aaa”)); //undefined,名為aaa的cookie的參數secure為true,因為需要使用安全協議https,而我們一般使用http協議,所以返回undefined
$.cookie(“ccc”,””); //自動編碼為:%E6%9D%8E%E9%98%BF%E6%98%80
alert($.cookie(“ccc”)); //自動解碼為:
4.關閉編碼/解碼,默認為false:
$.cookie.raw = true;
$.cookie(“ddd”,””); //沒有自動編碼,
alert($.cookie(“ddd”)); //
5.讀取所有cookie數據:
alert($.cookie());
js設置cookie的簡單方法
一,js設置cookie的用處
php可以設置cookie的,用js來設置cookie有什麼好處呢?在前端進行操作時,有的時候要傳很多參數,這個時候,我們可以把這些參數拼接到url後面進行傳值,那邊在接收參數,不過這樣挺麻煩的,如果把這些數據放到cookie裡面,就開發者的開發效率來說,我想會高一些,以淘寶為例,他有一級分類,二級分類,三級,四級,我們找商品的時候,可能會牽扯到很多條件,如果把這些條件都放到cookie裡面,我感覺就方便多了,不知道淘寶是不是這樣的。淘寶的url是加了密的,並且好長,有可能是根在url的後面。費話不多說看一個小例子。
二,js實例
調用一下上面方法:
setCookie(“test”,”tank”,1800); //設置cookie的值,生存時間半個小時
alert(getCookie(‘test’)); //取得cookie的值,顯示tank
clearCookie(“test”); //刪除cookie的值
alert(getCookie(‘test’)); //test對應的cookie值為空,顯示為false.就是getCookie最後返的false值。
深入理解cookie
看個實際生活的例子:
學校門口有家飯店味道不錯,小明去吃了一次,確實味道不錯,這周小明又去這家飯店吃飯,結賬時,小明說:」我上周來過,這是第二次了,能不能打個折?「。老闆說:」你來過?我不記得啊(無狀態)「。小明表示很生氣,明明來過老闆竟然不記得。老闆想了個法子,給小明發了張卡片(cookie),上面寫著小明的信息,下次小明拿著卡片來老闆就認識了。
回到正題,cookie用在http請求中,而http是無狀態協議,它的每個請求都是完全獨立的,服務端無法判別用戶狀態,cookie用來告訴服務端用戶的狀態信息。客戶端用戶第一次發送請求給服務端時,服務端在返回的響應中發給用戶一個cookie,裡面記錄了用戶的信息,下次用戶再發送http請求給服務端時,會攜帶上cookie,服務端檢查cookie獲取用戶的狀態信息。
cookie的內容主要是服務端寫入的,由客戶端存儲在本地,cookie其實是以字元串的形式存儲的。打開谷歌開發者工具的Application中的Cookie,可以看到cookie具有以下欄位
cookie以鍵值對的形式存儲用戶數據
不同域名是無法操作彼此cookie的,而且必須滿足path一樣或者是其子路徑才能相互訪問彼此的cookie。
domain用來設置可以使用cookie的域名,如果想讓一級域名下的兩個二級域名都能使用cookie,例如imag.baidu.com和,可以設置domain為baidu.com,但不能設置為.com,這樣兩個二級域名都能使用。path屬性設置允許使用cookie的路徑,例如設置為根路徑”/”,表示允許根路徑以及根路徑下的所有子路徑都可以使用cookie
所以domain和path共同決定了cookie能否被瀏覽器自動添加到請求頭部中發送出去。如果沒有設置這兩個選項,則會使用默認值。domain的默認值為設置該cookie的網頁所在的域名,path默認值為設置該cookie的網頁所在的目錄。
此外,如果是跨域請求,例如XMLHttpRequest請求,默認是不會自動攜帶cookie的。
cookie的過期時間,Expires是具體日期,Max-Age是一段時間
cookie的大小,一般是4k,此外cookie的個數也有限制,不同瀏覽器cookie的個數限制不同
該cookie數據是否只用來在http請求中傳遞,默認為false,如果設置該欄位為true,客戶端無法用js訪問或者操作該cookie,這條cookie信息不會出現在document.cookie的字元串中。
默認為false,設置該欄位為true則該cookie不會攜帶在http協議的請求中,只能攜帶在安全的https協議請求中
當網頁要發http請求時,瀏覽器會先檢查是否有相應的cookie,有則自動添加在request header中的cookie欄位中。這些是瀏覽器自動幫我們做的,而且每一次http請求瀏覽器都會自動幫我們做。這個特點很重要,因為這關係到「什麼樣的數據適合存儲在cookie中」。
因為每次瀏覽器發送http請求都會自動攜帶cookie,會增加網路開銷,所以最好只存放每次請求都需要發送給服務端的數據,比如身份認證信息。
客戶端使用js設置 cookie,客戶端可以設置cookie 的下列選項:expires、domain、path、secure(有條件:只有在https協議的網頁中,客戶端設置secure類型的 cookie 才能成功),但無法設置HttpOnly選項。document.cookie可以獲取cookie字元串,也可以設置cookie。
document.cookie=”age=12; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=sankuai.com; path=/”;
值得注意的是,瀏覽器提交Cookie時只會提交name和value屬性,maxAge屬性只被瀏覽器用來判斷Cookie是否過期。
當要設置多個cookie時,必須重複設置document.cookie = “key=name”。
要想修改一個cookie,只需要重新賦值就行,舊的值會被新的值覆蓋。但要注意一點,在設置新cookie時,path/domain這幾個選項一定要舊cookie 保持一樣。否則不會修改舊值,而是添加了一個新的 cookie。刪除一個cookie 也挺簡單,也是重新賦值,只要將這個新cookie的expires 選項設置為一個過去的時間點就行了。但要注意,path/domain/這幾個選項一定要舊cookie 保持一致。
服務端的response header中有一項叫set-cookie,是服務端專門用來設置cookie的。
原創文章,作者:RRIL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140098.html