Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setcookie() does not set cookie in Google Chrome

I am going through some PHP tutorials on how to set cookies. I have noticed that cookies are successfully set on FF4 and IE9, however it does not get set in Chrome (11.0.696.60). The PHP file was served from XAMPP (localhost).

I tried the example from w3schools:

<?php setcookie("user", "Alex Porter", time()+3600); ?> 

And from this site (for localhost environments):

<?php setcookie("username", "George", false, "/", false); ?> 

Thanks in advance.

like image 528
Elyas Avatar asked May 01 '11 14:05

Elyas


People also ask

Why is cookie not being set?

If the server doesn't allow credentials being sent along, the browser will just not attach cookies and authorization headers. So this could be another reason why the cookies are missing in the POST cross-site request.

What are cookies identify and explain setCookie () with an example?

The setcookie() function defines a cookie to be sent along with the rest of the HTTP headers. A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user's computer. Each time the same computer requests a page with a browser, it will send the cookie too.


1 Answers

Disabling cookies for IP addresses and localhost was a design decision. See also: https://code.google.com/p/chromium/issues/detail?id=56211

Ways to work around the issue include:

  • Set a local domain (e.g., edit /etc/hosts to use 127.0.0.1 localhost.com).
  • Use http://myproject.localhacks.com/ (which points to 127.0.0.1).
  • Use an empty domain value when setting the cookie.

For example, in PHP:

setcookie(   $AUTH_COOKIE_NAME,   $cookie_value,   time() + cookie_expiration(),   $BASE_DIRECTORY,   null,   false,   true ); 

Here the value null indicates that the domain should not be set.

Note: not setting the domain prevents the cookie being visible to sub-domains.

like image 75
Mike West Avatar answered Oct 09 '22 00:10

Mike West