设置HTTP cookie时,我可以使用localhost作为域吗?
我使用jQuery插件来设置cookie,当我使用localhost作为域时,它不会存储cookie。
这是我在jQuery 1.2.6中使用的插件。
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/
以下是我正在使用的代码。 您可以看到它不喜欢localhost,我从localhost上的开发Web服务器运行它。 一个细节是我正在运行4005端口,但这不应该影响域,AFAIK。
$(function() { console.log('Testing'); var one = $.cookie('Test.One'); var two = $.cookie('Test.Two'); var three = $.cookie('Test.Three'); console.log(['one', one]); console.log(['two', two]); console.log(['three', three]); $('#div1').text(one); $('#div2').text(two); $('#div3').text(three); $.cookie('Test.One', 'Test 1'); $.cookie('Test.Two', 'Test 2', { path: '/' }); $.cookie('Test.Three', 'Test 3', { path: '/', domain: 'localhost' }); });
我在设置cookie方面遇到了类似的问题。 组成域名并将其作为127.0.0.1添加到主机文件中。 然后在该域上运行Web应用程序。
我认为cookie的域名必须有两个点(不包括TLD之后的最后一个点)。 所以.something.localhost
没关系, .google.com
没问题,但.localhost
或google.com
不行。 但是对RFC 2965的一瞥表明它比那更复杂……您可能想要阅读该文档,尤其是第3.3节(和/或其前身, RFC 2109 )。
我更新了jQuery插件,以便在它是localhost时不将域添加到cookie中。 这解决了我的问题,而没有触及hosts文件。
var domain = (options.domain && options.domain !== 'localhost') ? '; domain=' + (options.domain) : '';
我正在使用Code Ignitor,并将域设置为空字符串修复了我在处理localhost上的应用程序时遇到的问题。 我相信这是更好的解决方案,因为开发团队中的每个人都不需要在Windows上弄乱他们的主机文件。
在实际站点上部署时,可以将生产域值放入Code Ignitor的config.php中。
我尝试将主机文件设置为使用备用名称(local.acme.com),现在我可以在该域上设置cookie。 我似乎无法在localhost上设置cookie,至少不能在Firefox上设置cookie。 我不记得那是对cookies的限制。 我想了解这里发生了什么。
此外,我确实尝试只在“dev”中创建hosts文件中的域,但这不起作用。 我不得不使用以.com或其他tld结尾的名称来使其工作。
我解决这个问题的最简单的解决方案是使用127.0.0.1而不是localhost ;-)这在Firefox中运行良好!