8

My set Cookie js function

function setCookie(name, value, expires, path){
    cookieStr = name + "=" + escape(value) + "; ";

    if(expires){
        expires = setExpiration(expires);
        cookieStr += "expires=" + expires + "; ";
    }
    if(path){
        cookieStr += "path=" + path + "; ";
    }
    document.cookie = cookieStr;
}

When I create a cookie,

 setCookie('MyCookie','cookieName',3,'/Members')

How to get cookie's path?

Karups
  • 187
  • 1
  • 2
  • 11

1 Answers1

14

TL:DR; You cannot read through cookies based on path using javascript.

In JavaScript, you can only set or get cookies by using the internal object document.cookie. And the content of this object will be a string of key value pairs of non-httpOnly cookie names and values separated by a ;. And that is pretty much it.

There is no way you could get a trace of Path, Domain and other attributes of cookies as they are only read by browsers and not shown to JavaScript.

On the other hand, If you are using any form of AJAX, You could try to intercept and parse the request headers by xhr.getResponseHeader("Set-Cookie") and store the value in localStorage or sessionStorage as per your need. I still advise you that it is not a good idea. Some of the browsers might consider Set-Cookie header as one of the forbidden headers to be read by javascript. but I think that restriction is only for httpOnly cookies.

Raja Anbazhagan
  • 4,092
  • 1
  • 44
  • 64
  • 3
    Things may have changed, there now be [`browser.cookies.getAll()`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/getAll) which **does** provide the _`path`_ among other things in a digestible object... however, getting access to this API (within compatible browsers) does require setting up a [`manifest.webmanifest`](https://developer.mozilla.org/en-US/docs/Web/Manifest) file. And the browsers that do _support_ such fanciness do so in different ways, which then requires another dependency (shim)... `localStorage` and `sessionStorage` seem way easier. – S0AndS0 Jun 05 '19 at 06:39
  • 1
    Surely you meant `document.cookie`, not `document.cookies` – danronmoon Jul 18 '22 at 00:14
  • As an addition to @SOAndSo 's comment: There is now the draft for the [CookieStore API](https://developer.mozilla.org/en-US/docs/Web/API/CookieStore) which seems to allow access to the attributes. I'm not sure if it is identical in behaviour to the "cookies" API of the previous comment, but it looks very similar. The cookieStore is already available in Chrome. There accessing the path currently works as follows: `cookieStore.get("name").then(cookie => console.log(cookie.path))` – Sebastian Nov 09 '22 at 10:33