Closed Bug 1232855 Opened 9 years ago Closed 7 years ago

navigator.cookieEnabled sometimes ignores per-site exceptions

Categories

(SeaMonkey :: General, defect)

SeaMonkey 2.39 Branch
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: commander4bugs, Unassigned, NeedInfo)

References

Details

Attachments

(2 files)

Attached image Blocked.png
User Agent: Mozilla/5.0 (Windows NT 6.1; rv:42.0) Gecko/20100101 Firefox/42.0 SeaMonkey/2.39
Build ID: 20151103191810

Steps to reproduce:

1. Set the browser to block all cookies
2. Add an exception for stanfordhealthcare.org to set session cookies
3. Go to https://myhealth.stanfordhealthcare.org/



Actual results:

The front page complains that cookies are disabled (see Blocked.png).


Expected results:

The front page should have allowed logging in (see Enabled.png)
Attached image Allowed.png
As far as I understand, all the cookie logic for this site is located in this file:

https://prodstaticcdn.stanfordhealthcare.org/resources/js/login.js

More specifically, the actual cookie check is done in this function:

var cookiesEnabled = function () {
    var cookieEnabled = (navigator.cookieEnabled) ? true : false;
    if (typeof navigator.cookieEnabled === "undefined" && !cookieEnabled) {
        document.cookie = "test";
        cookieEnabled = (document.cookie.indexOf("test") !== -1) ? true : false;
    }
    return (cookieEnabled);
};

This appears to be a standard way to check if cookies are enabled or not.
When I debugged this code in Firebug, I do see that navigator.cookieEnabled
returns "false", which is wrong.

The strange thing is that if I try a very similar code on this page,
I see that navigator.cookieEnabled correctly analyzes per-site exceptions.

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_nav_cookieenabled

Thus, this appears to dependent on when exactly navigator.cookieEnabled
is called during the page loading process.
BTW, forgot to mention, if I set the browser to allow all cookies,
then this page works correctly as expected.
The problem is that the new permissions model uses origins instead of hosts so http:// and https:// are different. However the data manager has not been updated to recognise this.

Bug 1180871 dealt with this by a workaround.
1. Go to https://myhealth.stanfordhealthcare.org/
2. Open Page Info View -> Page Info (CTRL-I)
3. Select the permissions tab.
4. Under Cookies choose Allow or Allow for Session.
5. Reload. Bingo!

From Bug 1180871 Comment 6
(neil@parkwaycc.co.uk)
> We need to implement the nsILoadContextInfo changes first anyway. I think it
> would be better to land and uplift this work done so far, and then fix the
> other bustage.

Perhaps it's time to fix the rest of the bustage?
Status: UNCONFIRMED → NEW
Depends on: 1180871
Ever confirmed: true
Flags: needinfo?(neil)
(In reply to Philip Chee from comment #4)
> Bug 1180871 dealt with this by a workaround.
> 1. Go to https://myhealth.stanfordhealthcare.org/
> 2. Open Page Info View -> Page Info (CTRL-I)
> 3. Select the permissions tab.
> 4. Under Cookies choose Allow or Allow for Session.
> 5. Reload. Bingo!

Yes, that works.

> From Bug 1180871 Comment 6
> (neil@parkwaycc.co.uk)
> > We need to implement the nsILoadContextInfo changes first anyway. I think it
> > would be better to land and uplift this work done so far, and then fix the
> > other bustage.
> 
> Perhaps it's time to fix the rest of the bustage?

The problem is that this website has several subdomains:

https://myhealth.stanfordhealthcare.org/
https://mychart.stanfordhealthcare.org/

With the Data Manager I would set a single permission for
the top domain (stanfordhealthcare.org) and be done with it.
The workaround described in comment #4 allows me to set
a permission only for the actual URL I am looking at, which
means myhealth.stanfordhealthcare.org. To get the website
to work, I had to open mychart.stanfordhealthcare.org separately
and use the workaround to allow cookies for it. It still
works, but using the Data Manager would be much simpler and
more straightforward.

Bottom line - yes, please fix the Data Manager :)
(In reply to Philip Chee from comment #4)
> From Bug 1180871 Comment 6
> (neil@parkwaycc.co.uk)
> > We need to implement the nsILoadContextInfo changes first anyway. I think it
> > would be better to land and uplift this work done so far, and then fix the
> > other bustage.
> 
> Perhaps it's time to fix the rest of the bustage?

and NEEDINFO NeilZZZ

No reply in over two months. I'm tempted to RESOLVE this bug INCOMPLETE. But I won't yet.
It appears that the Data Manager in SeaMonkey 2.46 now supports
specifying http:// or https:// when configuring cookie permissions
for sites. This resolves the issue reported in this bug, thus
I am going to mark it as resolved.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: