首页 > 编程知识 正文

js无法设置cookie是什么,配置什么参数避免js访问cookie

时间:2024-03-07 18:23:23 阅读:331806 作者:QTBN

本文目录一览:

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的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。