I am answering my own post with an update:
I solved the issue.
The string used to set the cookie had syntax
that Safari, and Opera would not allow.
That was due to a subtile and important issue
with a for loop: a missing break statement.
So the difference between Safari (and Opera)
and Firefox, Chrome is the cookie string syntax.
If secure is specified, it should be in the string
by itself and not set to anything. The issue I
tracked down was that 'secure=false;' was showing
up in the string when it is just set by the presence
of absence of 'secure'
Thank you for time and attention
JK