在Laravel框架中,在根域级别设置会话Cookie在safari 13.0.3中不起作用,但在Safari 12,Chrome和Firefox中有效。
由于未设置cookie,因此每次刷新页面都会创建一个新会话,并且无法登录。
除了app / session.php中的会话行为外,我还使用默认的laravel设置,其中我已将SESSION_DOMAIN更改为根域(“ .example.test”),并将SESSION_DRIVER设置为“数据库”(如下)来自Persisting sessions across subdomains in Laravel 5的建议。
当域设置为完整URL(subdomain.example.com)时,cookie会在safari 13中设置,但更改为根URL(.example.com)时不会设置
在Safari调试工具中,我可以看到设置了请求标头并通过了请求标头,但cookie从未将其存储到存储中。
我尝试过的事情:
答案 0 :(得分:1)
我无法测试Safari 13,但我猜是最近的RFC 6265 (2011):
Domain属性指定将向其发送Cookie的那些主机。例如,如果“域”属性的值为“ example.com”,则在向example.com,www.example.com和www.corp.example发出HTTP请求时,用户代理会将cookie包含在Cookie标头中。 com。 (请注意,即使不允许该字符,也会忽略前导%x2E(“。”)(如果存在),但如果存在尾随%x2E(“。”),则将导致用户代理忽略该属性。 )如果服务器省略了“域”属性,则用户代理只会将Cookie返回给原始服务器。
将SESSION_DOMAIN
设置为根域example.test
,而没有结尾的.
请注意,没有尾随.
的域在旧的RFC 2109 (1997)中是无效的,某些非常旧的浏览器可能不接受cookie。 Safari 12和其他流行的浏览器将接受Cookie,因为RFC 2965 (2000):
如果明确指定的值不是以点开头,则用户代理会提供前导点