<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>浮山狼de博客 &#187; cookie</title>
	<atom:link href="https://www.fushanlang.com/tag/cookie/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fushanlang.com</link>
	<description>next station - 下一站，活在当下，且行且思</description>
	<lastBuildDate>Sat, 29 Nov 2014 15:14:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.5</generator>
	<item>
		<title>javascript cookie操作问题</title>
		<link>https://www.fushanlang.com/javascript-cookie-e6-93-8d-e4-bd-9c-e9-97-ae-e9-a2-98-105/</link>
		<comments>https://www.fushanlang.com/javascript-cookie-e6-93-8d-e4-bd-9c-e9-97-ae-e9-a2-98-105/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 02:26:21 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[cookie]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=105</guid>
		<description><![CDATA[解决javascript cookie 不同页面共享的问题 <p>今天正好项目里要用cookie在不同页面共享一些数据，免去用get，post请求的问题，没想到居然遇到了很诡异的问题，两个页面的cookie竟然不能不能相互调用，很多设置在IE下有效，在Firefox、GoogleChrome 下无效，郁闷之余重新认识一下COOKIE：firefox cookie expires 无效</p> <p>cookie是由某一个网页所创建，在创建cookie的网页对cookie的操作是没有问题的。但在同一网站的多个页面，甚至是不同子目录下的页面，访问网站公共cookie时，需要设置相同的path才可以。语法如下：</p> <p>document.cookie=&#8221;name=value; path=cookieDir&#8221;; 如果要使cookie在整个网站下可用，可以将cookieDir指定为根目录即 &#8216;/&#8217;，示例如下： document.cookie=&#8221;user=Tom; path=/&#8221;;</p> <p>但是path不能解决在不同域中访问cookie的问题。在默认情况下，只有和设置cookie的网页在同一个Web服务器的网页才能访问该网页创建的cookie。但可以通过domain参数来实现对其的控制，其语法格式如下： document.cookie=&#8221;name=value; domain=cookieDomain&#8221;;通过域名限制，可以使子域名访问主域名下的cookie。例如: document.cookie=&#8221;user=Jerry;domain=a.com,path=/&#8221;,则网页sub.a.com的网页也可以访问它。</p> <p>设置网站各个目录页面都可以访问的cookie带来方便的同时，也有一些难以避免的问题就是，此后该网页的每个http请求，都会带上全站长长的cookie，直接导致服务器接收客户端request的header长度增长，流量增长的同时服务器负担也变重。而且根据 RFC 2109 的定义Cookie也有长度和个数限制，IE允许的最大 Cookie 长度是 4096 字节，允许50个 Cookie 名-值对。如果要突破50个名-值对的限制，可以在一个名-值使用Cookie字典的方式保存更多的Cookie变量。</p> <p>下面是一个用函数封装的js cookie操作： function setCookie(name, value, expires, path, domain, secure){ document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/javascript-cookie-e6-93-8d-e4-bd-9c-e9-97-ae-e9-a2-98-105/">javascript cookie操作问题</a></span>]]></description>
				<content:encoded><![CDATA[<h2>解决javascript cookie 不同页面共享的问题</h2>
<p>今天正好项目里要用cookie在不同页面共享一些数据，免去用get，post请求的问题，没想到居然遇到了很诡异的问题，两个页面的cookie竟然不能不能相互调用，很多设置在IE下有效，在Firefox、GoogleChrome 下无效，郁闷之余重新认识一下COOKIE：<span style="display: none;">firefox cookie expires 无效</span></p>
<p>cookie是由某一个网页所创建，在创建cookie的网页对cookie的操作是没有问题的。但在同一网站的多个页面，甚至是不同子目录下的页面，访问网站公共cookie时，需要设置相同的path才可以。语法如下：</p>
<p>document.cookie=&#8221;name=value; path=cookieDir&#8221;;<br />
如果要使cookie在整个网站下可用，可以将cookieDir指定为根目录即 &#8216;/&#8217;，示例如下：<br />
document.cookie=&#8221;user=Tom; path=/&#8221;;</p>
<p>但是path不能解决在不同域中访问cookie的问题。在默认情况下，只有和设置cookie的网页在同一个Web服务器的网页才能访问该网页创建的cookie。但可以通过domain参数来实现对其的控制，其语法格式如下：<br />
<strong>document.cookie=&#8221;name=value; domain=cookieDomain&#8221;</strong>;<strong>通过域名限制，可以使子域名访问主域名下的cookie。</strong>例如:<br />
document.cookie=&#8221;user=Jerry;domain=a.com,path=/&#8221;,则网页sub.a.com的网页也可以访问它。<span id="more-105"></span></p>
<p>设置网站各个目录页面都可以访问的cookie带来方便的同时，也有一些难以避免的问题就是，此后该网页的每个http请求，都会带上全站长长的cookie，直接导致服务器接收客户端request的header长度增长，流量增长的同时服务器负担也变重。而且根据 RFC 2109 的定义Cookie也有长度和个数限制，<strong>IE允许的最大 Cookie 长度是 4096 字节，允许50个 Cookie 名-值对。如果要突破50个名-值对的限制，可以在一个名-值使用Cookie字典的方式保存更多的Cookie变量。</strong></p>
<p>下面是一个用函数封装的js cookie操作：<br />
<code><br />
function setCookie(name, value, expires, path, domain, secure){<br />
document.cookie = name + "=" + escape(value) +<br />
((expires) ? "; expires=" + expires : "") +<br />
((path) ? "; path=" + path : "") +<br />
((domain) ? "; domain=" + domain : "") +<br />
((secure) ? "; secure" : "");<br />
}</code></p>
<div>function delCookie(name){<br />
var exp = new Date();<br />
exp.setTime(exp.getTime() &#8211; 1);<br />
var cval = getCookie(name);<br />
document.cookie = name + &#8220;=&#8221; + cval + &#8220;; expires=&#8221; + exp.toGMTString();<br />
}</div>
<div>function getCookie(name){<br />
var cookies = document.cookie.split(&#8216;;&#8217;);<br />
var cookie = &#8221;;<br />
for (var i = 0; i &lt; cookies.length; i++) {<br />
cookie = cookies[i].split(&#8216;=&#8217;);<br />
if (cookie[0].replace(/^s+|s+$/g, &#8221;) == name) {<br />
return (cookie.length &lt;= 1) ? &#8220;&#8221; : unescape(cookie[1].replace(/^s+|s+$/g, &#8221;));<br />
}<br />
}<br />
return null;<br />
}</div>
<div>function getExpDate(days, hours, minutes){<br />
var expDate = new Date();<br />
if (typeof(days) == &#8220;number&#8221; &amp;&amp; typeof(hours) == &#8220;number&#8221; &amp;&amp; typeof(hours) == &#8220;number&#8221;) {<br />
expDate.setDate(expDate.getDate() + parseInt(days));<br />
expDate.setHours(expDate.getHours() + parseInt(hours));<br />
expDate.setMinutes(expDate.getMinutes() + parseInt(minutes));<br />
return expDate.toGMTString();<br />
}<br />
return null;<br />
}</div>
<p><code> </code></p>
<p>有些常用的js类库，如jquery，也提供一下操作cookie的扩展，如：</p>
<div>jQuery.cookie = function(name, value, options) {<br />
if (typeof value != &#8216;undefined&#8217;) { // name and value given, set cookie<br />
options = options || {};<br />
if (value === null) {<br />
value = &#8221;;<br />
options = $.extend({}, options); // clone object since it&#8217;s unexpected behavior if the expired property were changed<br />
options.expires = -1;<br />
}<br />
var expires = &#8221;;<br />
if (options.expires &amp;&amp; (typeof options.expires == &#8216;number&#8217; || options.expires.toUTCString)) {<br />
var date;<br />
if (typeof options.expires == &#8216;number&#8217;) {<br />
date = new Date();<br />
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));<br />
} else {<br />
date = options.expires;<br />
}<br />
expires = &#8216;; expires=&#8217; + date.toUTCString(); // use expires attribute, max-age is not supported by IE<br />
}<br />
// NOTE Needed to parenthesize options.path and options.domain<br />
// in the following expressions, otherwise they evaluate to undefined<br />
// in the packed version for some reason&#8230;<br />
var path = options.path ? &#8216;; path=&#8217; + (options.path) : &#8221;;<br />
var domain = options.domain ? &#8216;; domain=&#8217; + (options.domain) : &#8221;;<br />
var secure = options.secure ? &#8216;; secure&#8217; : &#8221;;<br />
document.cookie = [name, &#8216;=&#8217;, encodeURIComponent(value), expires, path, domain, secure].join(&#8221;);<br />
} else { // only name given, get cookie<br />
var cookieValue = null;<br />
if (document.cookie &amp;&amp; document.cookie != &#8221;) {<br />
var cookies = document.cookie.split(&#8216;;&#8217;);<br />
for (var i = 0; i &lt; cookies.length; i++) {<br />
var cookie = jQuery.trim(cookies[i]);<br />
// Does this cookie string begin with the name we want?<br />
if (cookie.substring(0, name.length + 1) == (name + &#8216;=&#8217;)) {<br />
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));<br />
break;<br />
}<br />
}<br />
}<br />
return cookieValue;<br />
}<br />
};</div>
<p><code> </code></p>
<div>这个扩展不同于上面函数封装的地方除了与$绑定外，与cookie设置相关的参数放在了一个Hash对象里<strong>{path:&#8217;/&#8217;,domain:&#8217;mydomain.com&#8221;,[&#8230;]}</strong>。</div>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/javascript-cookie-e6-93-8d-e4-bd-9c-e9-97-ae-e9-a2-98-105/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.129 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2026-05-17 04:56:55 -->
