Reputation: 20046
I have a very simple line of code that set and read a cookie. I kept getting empty value for my cookie and have no understanding why. I have cookie enabled and know that cookies work on the browser.
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
document.cookie = "ding=dong";
</SCRIPT>
<script type="text/javascript">
alert(document.cookie);
</script>
</BODY>
</HTML>
Upvotes: 49
Views: 89206
Reputation: 20778
If the purpose of setting cookies in Javascript (as opposed to cookies coming from an HTTP request), is to persist some data, then the alternative is just to use session storage.
sessionStorage.setItem("mykey", myvalue);
myvalue = sessionStorage.getItem("mykey");
or eventually local storage depending on the persistence you need.
Upvotes: 0
Reputation: 270
Chrome has some stricter cookie policies.
but if you want to check your project locally and need to set cookies in Chrome you can play a trick. you can run a server using Python or node.js easily.
python -m http.server
Note: (if the Python command isn't working, it means Python isn't in the path you can set the path in Environment or you can use the full path of python.exe)
Good luck
Upvotes: 0
Reputation: 2270
Use HTML5 Local Storage instead:-
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<SCRIPT type="text/javascript">
localStorage.setItem("myCookie", "ding=dong");
</SCRIPT>
<script type="text/javascript">
alert(localStorage.getItem("myCookie"));
</script>
</BODY>
</HTML>
Upvotes: 0
Reputation: 2206
Just change the URL from the loopback network interface to the address of the NIC of your LAN will do the work, e.g.
http://localhost:8080 -> http://192.168.1.15:8080
Upvotes: -2
Reputation: 65
Chrome doesn’t store cookies from the pages which are loaded from local file system. ex: file:///C:/User
Upvotes: 2
Reputation: 81
Chrome denies file cookies. To make your program work, you going to have to try it in a different browser or upload it to a remote server. Plus, the code for your setcookie and getcookie is essentially wrong. Try using this to set your cookie:
function setCookie(name,value,expires){
document.cookie = name + "=" + value + ((expires==null) ? "" : ";expires=" + expires.toGMTString())
}
example of usage:
var expirydate=new Date();
expirydate.setTime( expirydate.getTime()+(100*60*60*24*100) )
setCookie('cookiename','cookiedata',expirydate)
// expirydate being a variable with the expiry date in it
// the one i have set for your convenience expires in 10 days
and this to get your cookie:
function getCookie(name) {
var cookieName = name + "="
var docCookie = document.cookie
var cookieStart
var end
if (docCookie.length>0) {
cookieStart = docCookie.indexOf(cookieName)
if (cookieStart != -1) {
cookieStart = cookieStart + cookieName.length
end = docCookie.indexOf(";",cookieStart)
if (end == -1) {
end = docCookie.length
}
return unescape(docCookie.substring(cookieStart,end))
}
}
return false
}
example of usage:
getCookie('cookiename');
Hope this helps.
Cheers, CoolSmoothie
Upvotes: 8
Reputation: 11035
With chrome, you cannot create cookies on a local website, so you need to trick your browser into thinking this site is not local by doing the following:
1) Place the root directory of the web site into C:\inetpub\wwwroot
, (so it looks like C:\inetpub\wwwroot\yourProjectFolder
)
2) Get your computer name
by right clicking Computer
, clicking properties, and looking for Computer Name
3) Access your site in the browser by visiting http://my-computer-name/yourProjectFolder/index.html
, at which point creating cookies should work.
(notice that I use dashes in the computer name, NOT underscores)
Upvotes: 3
Reputation: 85
I tried to save an cookie on Chrome and had the same error, that it would save. Although it did work in Firefox, so I asked an collegue and he suggested that I take away path and domain (I had name of cookie, value, expire, path amd domain) and all of a sudden it worked. So just to get the cookie to actually save in Chrome, you just need name, value and expire.
Hope it helps.
Example:
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+";";
}
Upvotes: 7
Reputation: 720
I get the same weird behavior when opening a page in Chrome from localhost
When I map the same page in my hosts file and open the same page through the mapped name, normal cookie functionality resumes.
c:\windows\system32\drivers\etc\hosts
)127.0.0.1 localhostdevelopment.com
or similar to the end of your hosts fileUpvotes: 2
Reputation: 2427
Recently I stumbled upon a similar issue. My script couldn't store a cookie in Chromium, although it worked well on all other major browsers. After some googling it turned out that Chrome ignores cookies from local pages. After I uploaded the page to remote server code magically started to work.
Upvotes: 132
Reputation: 25650
It works fine for me but Once again Make sure if your JS
and Cookies
are enabled in browser. Your should check whether you cookie is setting properly or not using if(document.cookie)
, it will then be easier for you debugging where the problem is. Maybe you're cookies are not written properly. Please do consider the following code.
Write the Cookie
Use the following code to write your cookie:
<script language="JavaScript">
cookie_name = "Basic_Cookie";
function write_cookie() {
if(document.cookie) {
index = document.cookie.indexOf(cookie_name);
} else {
index = -1;
}
if (index == -1) {
document.cookie=cookie_name+"=1; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
} else {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1) {
countend = document.cookie.length;
}
count = eval(document.cookie.substring(countbegin, countend)) + 1;
document.cookie=cookie_name+"="+count+"; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
}
}
</script>
Read Your Cookie
Once you've written the cookie, you need to read it in order to use it. Use this script to read your cookie:
<script language="JavaScript">
function gettimes() {
if(document.cookie) {
index = document.cookie.indexOf(cookie_name);
if (index != -1) {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1) {
countend = document.cookie.length;
}
count = document.cookie.substring(countbegin, countend);
if (count == 1) {
return (count+" time");
} else {
return (count+" times");
}
}
}
return ("0 times");
}
</script>
Call Your Cookie in a Link
Set your cookie when someone clicks a link with this code in your HTML body:
<script language="javascript">document.write(gettimes());</script>
Reference: Simple Cookie Read & Write
Hope this helps.
Upvotes: 1