javascript设置cookie高级篇可跨域访问
推荐使用:
//根据名称获取Cookie
function getCookie(cname) {var name = cname + "=";var ca = document.cookie.split(';');for (var i = 0; i < ca.length; i++) {var c = ca[i].trim();if (c.indexOf(name) == 0) return c.substring(name.length, c.length);}return null;
};//设置Cookie; 参数cname名称,cvalue值,exdays天数
function setCookie(cname, cvalue, exdays) {var d = new Date();d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));var expires = "expires=" + d.toGMTString();document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/;domain=.xxxxx.com";
};
//使用时一定要修改 .xxxxx.com 为你的域名, 如www.baidu.com 改为.baidu.com
常规操作
参考:JavaScript Cookie | 菜鸟教程
function setCookie(cname,cvalue,exdays){var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname){var name = cname + "=";var ca = document.cookie.split(';');for(var i=0; i<ca.length; i++) {var c = ca[i].trim();if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }}return "";
}
function checkCookie(){var user=getCookie("username");if (user!=""){alert("欢迎 " + user + " 再次访问");}else {user = prompt("请输入你的名字:","");if (user!="" && user!=null){setCookie("username",user,30);}}
}
跨域访问cookie (仅支持二级域名)
参考:javascript跨域设置cookie(二级域名)_xuebingnan的博客-CSDN博客
function setCookie(c_name, value, expiredays) {var exdate = new Date();exdate.setDate(exdate.getDate() + expiredays);document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString() + ";path=/;domain=.testdomain.com")}var AdTime = new Date(); if (AdTime != "") {setCookie("AdTime", AdTime, 1);}
延伸阅读
jQuery Cookie 插件
摘自:jQuery Cookie 插件 | 菜鸟教程
Query 可以通过 jquery.cookie.js 插件来操作 Cookie。
官方地址:jQuery Cookie | jQuery Plugin Registry
Github 地址:https://github.com/carhartl/jquery-cookie
使用 jquery.cookie.js 之前需要先引入 jQuery:
<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/jquery.cookie.js"></script>
我们可以使用第三方资源库引入这两个文件:
<script src="https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
使用方法
创建 cookie:
$.cookie('name', 'value');
如果未指定过期时间,则会在关闭浏览器或过期。
创建 cookie,并设置 7 天后过期:
$.cookie('name', 'value', { expires: 7 });
创建 cookie,并设置 cookie 的有效路径,路径为网站的根目录:
$.cookie('name', 'value', { expires: 7, path: '/' });
注:在默认情况下,只有设置 cookie 的网页才能读取该 cookie。如果想让一个页面读取另一个页面设 置的cookie,必须设置 cookie 的路径。cookie 的路径用于设置能够读取 cookie 的顶级目录。将这 个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突)。
读取 cookie:
$.cookie('name'); // => "value"
$.cookie('nothing'); // => undefined
读取所有的 cookie 信息:
$.cookie(); // => { "name": "value" }
删除 cookie:
// cookie 删除成功返回 true,否则返回 false
$.removeCookie('name'); // => true
$.removeCookie('nothing'); // => false // 写入使用了 path时,读取也需要使用相同的属性 (path, domain)
$.cookie('name', 'value', { path: '/' });// 以下代码【删除失败】
$.removeCookie('name'); // => false
// 以下代码【删除成功】
$.removeCookie('name', { path: '/' }); // => true
注意:删除 cookie 时,必须传递用于设置 cookie 的完全相同的路径,域及安全选项。
$(document).ready(function(){$.cookie('name', 'runoob'); // 创建 cookiename = $.cookie('name'); // 读取 cookie$("#test").text(name);$.cookie('name2', 'runoob2', { expires: 7, path: '/' });name2 = $.cookie('name2');$("#test2").text(name2);
});
执行完后,我们可以在浏览器中查看 Cookie 信息,如下图所示:
参数说明
raw
默认值:false。
默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用 encodeURIComponent 编码,decodeURIComponent 解码)。要关闭这个功能设置 raw:true 即可:
$.cookie.raw = true;
json
设置 cookie 的数据使用 json 存储与读取,这时就不需要使用 JSON.stringify 和 JSON.parse 了。
$.cookie.json = true;
expires
定义 cookie 的有效时间,值可以是一个数字(从创建 cookie 时算起,以天为单位)或一个 Date 对象。如果省略,那么创建的 cookie 是会话 cookie,将在用户退出浏览器时被删除。
expires: 365
path
默认情况:只有设置 cookie 的网页才能读取该 cookie。
定义 cookie 的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为)。
如果你想在整个网站中访问这个 cookie 需要这样设置有效路径:path: '/'。如果你想删除一个定义了有效路径的 cookie,你需要在调用函数时包含这个路径:
path: '/'
$.cookie('the_cookie', null,{ path: '/' });
domain
默认值:创建 cookie 的网页所拥有的域名。
domain: 'example.com'
secure
默认值:false。如果为 true,cookie 的传输需要使用安全协议(HTTPS)。
secure: true
源码
/*!* jQuery Cookie Plugin v1.4.1* https://github.com/carhartl/jquery-cookie** Copyright 2006, 2014 Klaus Hartl* Released under the MIT license*/
(function (factory) {if (typeof define === 'function' && define.amd) {// AMD (Register as an anonymous module)define(['jquery'], factory);} else if (typeof exports === 'object') {// Node/CommonJSmodule.exports = factory(require('jquery'));} else {// Browser globalsfactory(jQuery);}
}(function ($) {var pluses = /\+/g;function encode(s) {return config.raw ? s : encodeURIComponent(s);}function decode(s) {return config.raw ? s : decodeURIComponent(s);}function stringifyCookieValue(value) {return encode(config.json ? JSON.stringify(value) : String(value));}function parseCookieValue(s) {if (s.indexOf('"') === 0) {// This is a quoted cookie as according to RFC2068, unescape...s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');}try {// Replace server-side written pluses with spaces.// If we can't decode the cookie, ignore it, it's unusable.// If we can't parse the cookie, ignore it, it's unusable.s = decodeURIComponent(s.replace(pluses, ' '));return config.json ? JSON.parse(s) : s;} catch(e) {}}function read(s, converter) {var value = config.raw ? s : parseCookieValue(s);return $.isFunction(converter) ? converter(value) : value;}var config = $.cookie = function (key, value, options) {// Writeif (arguments.length > 1 && !$.isFunction(value)) {options = $.extend({}, config.defaults, options);if (typeof options.expires === 'number') {var days = options.expires, t = options.expires = new Date();t.setMilliseconds(t.getMilliseconds() + days * 864e+5);}return (document.cookie = [encode(key), '=', stringifyCookieValue(value),options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IEoptions.path ? '; path=' + options.path : '',options.domain ? '; domain=' + options.domain : '',options.secure ? '; secure' : ''].join(''));}// Readvar result = key ? undefined : {},// To prevent the for loop in the first place assign an empty array// in case there are no cookies at all. Also prevents odd result when// calling $.cookie().cookies = document.cookie ? document.cookie.split('; ') : [],i = 0,l = cookies.length;for (; i < l; i++) {var parts = cookies[i].split('='),name = decode(parts.shift()),cookie = parts.join('=');if (key === name) {// If second argument (value) is a function it's a converter...result = read(cookie, value);break;}// Prevent storing a cookie that we couldn't decode.if (!key && (cookie = read(cookie)) !== undefined) {result[name] = cookie;}}return result;};config.defaults = {};$.removeCookie = function (key, options) {// Must not alter options, thus extending a fresh object...$.cookie(key, '', $.extend({}, options, { expires: -1 }));return !$.cookie(key);};}));
javascript设置cookie高级篇可跨域访问相关推荐
- 转载 - 通过设置P3P头来实现跨域访问COOKIE
作者:老王 网上看了别人介绍的一片文章,说使用P3P可以完成跨域COOKIE操作,感觉很COOL,不过没有提供源代码,我胡乱写了一下,大家看看. 实际工作中,类似这样的要求很多,比如说,我们有两个域名 ...
- PHP 通过设置P3P头来实现跨域访问COOKIE
我的是CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入 127.0.0.1 www.a.com 127.0.0.1 www.b.com ...
- [Cookie]解决Cookie跨域访问
前言 随着工程的不断扩大,要部署很多不同的服务,这其中就避免不了Cookie的跨域问题,如何实现Cookie在不同域之前实现传输,本文将详细描述. Cookie介绍 1.path Cookie路径是由 ...
- 阿里云OSS设置跨域访问
阿里云OSS设置跨域访问 简介 操作步骤 简介 OSS 提供 HTML5 协议中的跨域资源共享 CORS 设置,帮助您实现跨域访问.当 OSS 收到一个跨域请求(或者 OPTIONS 请求)时,会读取 ...
- AJAX跨域访问解决方案
Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...
- [转]Ajax跨域访问问题-方法大全
Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...
- Web应用跨域访问解决方案
Web应用跨域访问解决方案 Web应用的跨域访问解决方案 Web跨域访问解决方案 做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与 ...
- Web应用跨域访问及单点登录解决方案汇总
做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.Ajax的跨域访问问题是现有的Aj ...
- 跨域访问被禁止的演示示例
Web端的跨域访问是不被允许的, 本篇演示两种场景: 通过Ajax访问跨域资源 在iframe 中嵌入跨域的一个站点的地址 1. 通过Ajax访问跨域资源 演示介绍: 本地Tomcat 中的页面,访问 ...
- Spring Boot配置跨域访问策略
From: https://blog.csdn.net/garyond/article/details/80192760 1. 引言 我们在开发过程中通常因为不同应用之间的接口调用或者应用之间接口集成 ...
最新文章
- pcl需要注意的编译问题
- python-列表生成器
- 班尼机器人怎样下载_我的超级助手——G7算账机器人
- 使用REVERSE INDEX改善大规模数据插入【IMPROVE INSERT STATEMENT USING REVERSE INDEX】
- C/C++ 代码转换规范化的脚本
- Java使用多线程发送消息
- linux下mysql安装
- 客户关系管理OACRM商品进销存销售管理合同订单库存财务管理跟单PHP源码
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
- mysql 把主键当外键_MySQL主键和外键使用及说明
- XCODE GDB这个是老版本xcode,新版的是lldb
- 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
- Arcgis利用点数据集(txt数据)转为shp线数据(含案例)
- python编写性别比例失衡_性别比例失衡加剧什么情况?什么原因导致这样的结果?...
- DPDK - flow Haripin
- 微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器
- AndroidX App Startup 介绍及使用
- JS清除IE浏览器缓存的方法
- 100%BIM学员的疑惑:不会CAD可以学Revit吗?
- Js之 push、pop、shift、unshift的区别