我在localhost上有directus API和管理应用程序,而在localhost:3000上有前端React应用程序。当我尝试通过React接口中的client.login方法登录时,directus将cookie设置为localhost(其管理应用程序源)。但是我需要在我的实际应用程序所在的localhost:3000上使用此cookie。 设置cookie标头是这样的: directus-test-session = 4JCvIJhNxCovLAvCwkSulylc8ZYq1iok4EQ3%3A%3A5b84ad5310ba25a7129ed57448136e13;路径= /; expires =星期六,2020年1月4日14:06:49 UTC; HttpOnly
Google控制台也提供如下警告:
设置了与http://directus.test处的跨站点资源关联的cookie,但未设置SameSite
属性。如果将来的Chrome浏览器版本设置为SameSite=None
和Secure
,则仅会发送带有跨站点请求的cookie。
我需要将cookie设置为localhost:3000。我怎样才能做到这一点?预先谢谢你。
答案 0 :(得分:0)
我不确定在撰写本文时Chrome是否允许您将Cookie设置为特定端口上的localhost *
对于引发的警告:我们无法设置SameSite
属性,因为这将完全取消对跨域cookie的支持。您可以将最终项目与Directus托管在同一(子)域上,也可以使用JWT模式进行身份验证。 (使用client.login
时,请设置mode = 'jwt'
。)
我们可以考虑默认情况下制作Cookie Secure
,但这可能会妨碍localhost的开发,因为这需要HTTPS连接来发送Cookie。
* Chrome(和其他浏览器)最近非常频繁地更新其Cookie政策,以对抗第三方跟踪。